【问题标题】:Web.py Template Not Found未找到 Web.py 模板
【发布时间】:2014-06-03 10:25:47
【问题描述】:

我关注this Tutorial 来测试我的 MySQL 的 Web.py 设置。

由于教程没有完整的源代码,我在这里发布我的:

import web
import MySQLdb

web.config.debug = False

urls = (
  '/login', 'Login',
  '/reset', 'Reset',
)
app = web.application(urls, locals())
db = web.database(dbn='mysql', db='dbname', user='user', pw='password')

store = web.session.DiskStore('sessions')
session = web.session.Session(app, store,
                              initializer={'login': 0, 'privilege': 0})

def logged():
        if session.login==1:
            return True
        else:
            return False
def create_render(privilege):
    if logged():
        if privilege == 0:
            render = web.template.render('/Users/me/Desktop/cpage/Templates/reader')
        elif privilege == 1:
            render = web.template.render('/Users/me/Desktop/cpage/Templates/user')
        elif privilege == 2:
            render = web.template.render('/Users/me/Desktop/cpage/Templates/admin')
        else:
            render = web.template.render('/Users/me/Desktop/cpage/Templates/communs')
    else:
        render = web.template.render('/Users/me/Desktop/cpage/Templates/login')
    return render
class Login:
    def GET(self):
        if logged():
            render = create_render(session.privilege)
            return '%s' % render.login_double()
        else:
            render = create_render(session.privilege)
            return '%s' % render.login()
    def POST(self):
        name, passwd = web.input().name, web.input().passwd
        ident = db.select('example_users', where='name=$name', vars=locals())[0]
        try:
            if hashlib.sha1("sAlT754-"+passwd).hexdigest() == ident['pass']:
                session.login = 1
                session.privilege = ident['privilege']
                render = create_render(session.privilege)
                return render.login_ok()
            else:
                session.login = 0
                session.privilege = 0
                render = create_render(session.privilege)
                return render.login_error()
        except:
            session.login = 0
            session.privilege = 0
            render = create_render(session.privilege)
            return render.login_error()
class Reset:
    def GET(self):
        session.login = 0
        session.kill()
        render = create_render(session.privilege)
        return render.logout()

if __name__ == "__main__":
    app.run()

桌面上的目录cpage包含如下:

DBTest.py 模板 login.html 会话

在模板中有另一个 login.html,只是为了确保它在那里,因为我面临的问题是:服务器能够从终端启动(我正在运行 MacOSX Mavericks) 但是每当我输入 localhost:port/login 时,它就会崩溃:

http://0.0.0.0:1234/
Traceback (most recent call last):
  File "/Library/Python/2.7/site-packages/web/application.py", line 239, in process
    return self.handle()
  File "/Library/Python/2.7/site-packages/web/application.py", line 230, in handle
    return self._delegate(fn, self.fvars, args)
  File "/Library/Python/2.7/site-packages/web/application.py", line 420, in _delegate
    return handle_class(cls)
  File "/Library/Python/2.7/site-packages/web/application.py", line 396, in handle_class
    return tocall(*args)
  File "cpage/DBTest.py", line 48, in GET
    return '%s' % render.login()
  File "/Library/Python/2.7/site-packages/web/template.py", line 1017, in __getattr__
    t = self._template(name)
  File "/Library/Python/2.7/site-packages/web/template.py", line 1011, in _template
    self._cache[name] = self._load_template(name)
  File "/Library/Python/2.7/site-packages/web/template.py", line 1001, in _load_template
    raise AttributeError, "No template named " + name
AttributeError: No template named login

【问题讨论】:

    标签: python templates python-2.7 web.py


    【解决方案1】:

    好吧,我自己想通了,这可能是学习东西的最佳方式。 无论哪种方式,我都想为世界提供答案。

    首先,教程中的代码看起来有点不同,所以post helped me a lot.

    使用此代码(或更好:合并它)后,我遇到了同样的问题。

    我终于不得不重新组织我的文件夹结构。将 layout.html 添加到 Templates 文件夹解决了该问题。使用正确的目录路径也很重要。

    【讨论】:

      猜你喜欢
      • 2014-10-18
      • 1970-01-01
      • 1970-01-01
      • 2010-12-20
      • 1970-01-01
      • 2014-08-16
      • 2012-10-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多