浏览 2563 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-04-06
今天放假在家,外面又在下雨,闲来无事,写了个简单的模板引擎,其实也不算什么模板,只是把嵌在html里的python代码解释成嵌入在python里的html代码,仅此而已,代码也很简陋,纯粹个人娱乐 以下是示例代码: from web.render import SimpleHTMLRender from socketserver import ThreadingMixIn from wsgiref.simple_server import WSGIServer render = SimpleHTMLRender("F:/test/") class ThreadingWSGIServer(ThreadingMixIn,WSGIServer): pass def application(env,start_response): start_response("200 OK",[("Content-Type","text/html;charset=UTF-8")]) return render.hello(name="phyeas") if __name__=="__main__": from wsgiref.simple_server import make_server httpd=make_server('',8080,application,server_class=ThreadingWSGIServer) print("Http Service on port 8080....") httpd.handle_request() 需要在F:/test目录下放置一个叫hello.html的文件。文件内容是: <%def render(name):%> Hello <%=name%>! 当然了,路径和文件名可以自定 输出结果就是 Hello phyeas!(当然可以改成你的名字啦) 运行后将生成一个hello.py文件和hello.pyc文件,前面是由SimpleHTMLRender生成的,后面是导入到程序里python自动编译的结果 核心代码: def render(self, fpath, *args, **kwargs): if os.path.exists(fpath[0:-5]+".py") or os.path.exists(fpath[0:-5]+".pyc"): if os.path.dirname(fpath) not in sys.path: sys.path.append(os.path.dirname(fpath)) py_f_path=fpath[0:-5]+".py" if os.path.exists(fpath[0:-5]+".py") else fpath[0:-5]+".pyc" create_new_file=False if os.stat(fpath).st_mtime>os.stat(py_f_path).st_ctime:#如果html文件的修改时间大于python文件的创建时间,就重新创建 with open(fpath,encoding="UTF-8") as f: parseHTML2Py(f) create_new_file=True fname=os.path.split(fpath)[1][:-5]#获取文件名 import_statement="import "+fname if import_statement not in imports or create_new_file:#创建新文件时重新import exec(import_statement)#导入模块 if fname+"_real_func" not in self.render_functions or create_new_file:#创建新文件时重新绑定函数 self.render_functions[fname+"_real_func"]=eval(fname+".render")#获取出函数绑定 return getattr(self,fname+"_real_func")(*args,**kwargs) else: with open(fpath,encoding="UTF-8") as f: parseHTML2Py(f) return self.render(fpath,*args,**kwargs)
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-04-10
经过几天的努力,今天终于跑通了python的一个程序,不易啊
下载软件费了老半天,安装也在不停的安装卸载多次 不过现在用eclipse开发还是有问题,还会报找不到django模块,在命令行里运行却没有问题,所以怀疑是python没安装好吧,我装的是python2.6的 网上找了几天也没解决,暂时先不管了,先学习学习文档再说 |
|
返回顶楼 | |
发表时间:2009-04-12
.
|
|
返回顶楼 | |