您的位置:首页 > 其它

web.py使用模板时报错No template named index原因及解决方案

2016-03-09 10:29 281 查看
初次接触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获取到正确的路径,用以上代码代替原先的代码即可
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: