初次接触web.py时,大多会接触到web.py的官方中文教程(http://webpy.org/docs/0.3/tutorial.zh-cn),其中包含了一个关于模板(template)的示例:
import web render = web.template.render('templates/') urls = ( '/', 'index' ) class index: def GET(self): name='Bob' return render.index(name) #return "Hello, world!" if __name__ == "__main__": app = web.application(urls, globals()) app.run()但是在实际运行过程中,很多同学会发现,自己的代码与官方教程完全一致,却报错“No template named index”
出现以上错误的原因可能有两个:
①
return render.index(name)此段代码会要求在templates目录下寻找名为"index.html"的文件(以name为参数),而教程中所提到的“ 在该目录下新建一个以
.html
结尾的文件”会使人误认为html文件的名字可以任取。
解决方案:将html文件改名为".index.html"
②
部分同学会使用第三方软件(如Notepad++等)进行Python的开发和运行,而Notepad++会使用软件安装的目录作为运行的默认目录,而并非Python文件本身存在的目录,因此会导致web.py找不到对应的目录。
解决方案:
(1)改进Python运行的命令
***以下为引用***
改进后的命令行是:
cmd /k cd "$(CURRENT_DIRECTORY)" & python "$(FULL_CURRENT_PATH)" & ECHO. & PAUSE & EXIT
该命令行的含义是:首先cd 到该要执行的Python脚本所在的目录(CURRENT_DIRECTORY),在该目录下,执行 python程序,这样工作目录就由默认的Notepad++的安装目录,改为了该要执行的Python脚本所在的目录。
***引用结束***
reference:http://www.cnblogs.com/zhcncn/p/3969419.html
注:原文中改进后的命令行存在错误,现已修正
(2)使Python获取正确的路径
import os
root = os.path.dirname(__file__)
render = web.template.render(os.path.join(root, '..', 'templates/'))
以上三行可以正确的使web.py获取到正确的路径,用以上代码代替原先的代码即可