【问题标题】:webpy template with session - ThreadedDict error带有会话的 webpy 模板 - ThreadedDict 错误
【发布时间】:2015-01-14 23:14:35
【问题描述】:

我刚刚开始使用 web.py 并且正在阅读文档。我正在尝试在模板中使用会话信息,并按照http://webpy.org/cookbook/session_in_template 此处的说明进行操作,但是我收到以以下内容结尾的错误:

AttributeError: 'ThreadedDict' 对象没有属性 'username'

127.0.0.1:53865 - - [14/Jan/2015 22:55:44] “HTTP/1.1 GET /” - 500 内部服务器错误

我尝试使用的代码来自此示例:http://webpy.org/docs/0.3/sessions

我在下面包含了我所拥有的:

bin/login.py

import web

urls = (
    '/', 'Index',
    '/login', 'Login',
    '/logout', 'Logout'
)

web.config.debug = False
app = web.application(urls, locals())
session = web.session.Session(app, web.session.DiskStore('sessions'))

class Index:
    def GET(self):
        if session.get('logged_in', False):
            render = web.template.render('templates', globals={'context': session})
            return render.logout()
        return '<h1>You are not logged in</h1><a href="/login">Login now</a>'

class Login:
    def GET(self):
        session.logged_in = True
        raise web.seeother('/')

class Logout:
    def GET(self):
        session.logged_in = False
        raise web.seeother('/')

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

模板/logout.html

<html>
<body>
<span>You are logged in as <b>$context.username</b></span>
<a href="/logout">Logout</a>
</body>
</html>

我尝试按照WebPy Sessions with Templates 中的建议在全局变量中设置session['username'] = 'CRC',但我遇到了同样的问题。

谁能看到这里出了什么问题?

谢谢,

德国

【问题讨论】:

    标签: python web.py


    【解决方案1】:

    我终于想通了。 Sessions.username 默认不存在,需要定义。我使用初始化器来设置它。

    session = web.session.Session(app, web.session.DiskStore('sessions'), initializer={'username': 'test_user'})
    

    【讨论】:

      猜你喜欢
      • 2012-06-10
      • 2011-12-22
      • 2014-05-24
      • 1970-01-01
      • 1970-01-01
      • 2013-09-12
      • 1970-01-01
      • 2014-09-29
      • 2012-08-07
      相关资源
      最近更新 更多