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)的示例:
但是在实际运行过程中,很多同学会发现,自己的代码与官方教程完全一致,却报错“No template named index”
出现以上错误的原因可能有两个:
①
此段代码会要求在templates目录下寻找名为"index.html"的文件(以name为参数),而教程中所提到的“在该目录下新建一个以
解决方案:将html文件改名为".index.html"
②
部分同学会使用第三方软件(如Notepad++等)进行Python的开发和运行,而Notepad++会使用软件安装的目录作为运行的默认目录,而并非Python文件本身存在的目录,因此会导致web.py找不到对应的目录。
解决方案:
(1)改进Python运行的命令
***以下为引用***
改进后的命令行是:
该命令行的含义是:首先cd 到该要执行的Python脚本所在的目录(CURRENT_DIRECTORY),在该目录下,执行 python程序,这样工作目录就由默认的Notepad++的安装目录,改为了该要执行的Python脚本所在的目录。
***引用结束***
reference:http://www.cnblogs.com/zhcncn/p/3969419.html
注:原文中改进后的命令行存在错误,现已修正
(2)使Python获取正确的路径
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获取到正确的路径,用以上代码代替原先的代码即可
相关文章推荐
- ajax请求返回状态为200但还是进入error事件
- C++ 对象或指针类型转换
- Wijmo全新出发,2016年蓝图抢先看
- unity 中的 数学函数库(完善中)
- 安卓雷达扫描动画效果实现
- using System.Diagnostics 可以制作一个定时器
- JAVA实现二叉树的遍历
- 145 php 设计模式代码和应用场景实例
- [转]Oracle 操作字符串的函数
- 深入浅出 ES6:ES6 与 Babel / Broccoli 的联用
- 人脸特征点定位
- 解决gdb 调试 core 文件函数名显示为问号的问题
- 深入浅出 ES6:ES6 与 Babel / Broccoli 的联用
- php判断是否是手机浏览器
- custom HID代码分析(一) 报文描述符
- lzg_ad: 构建一个包含FBWF的Windows Embedded Standard 7镜像
- javaWeb定时任务的一种实现方式
- 排序算法
- Linux下使用NMON监控、分析系统性能
- POJ 3693:RMQ+后缀数组