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

初次接触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获取到正确的路径,用以上代码代替原先的代码即可

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值