带模板的WebPy会话

时间:2012-06-06 00:54:12

标签: session web.py

使用Webpy。我在app.py中有以下代码:

app = web.application(urls, globals())
session = web.session.Session(app, web.session.DiskStore('sessions'), initializer={'count': 0, 'username': 'CRC'})
render = web.template.render('templates/', base="base", globals={'context': session, 'username': 'CRC'})

class Index(object):
    def GET(self):

        if not session:
                session.count = 0
        else:
                session.count = 1

        return render.hello_form()

    def POST(self):
        form = web.input(name="Nobody", greet="Hello")
        greeting = "%s, %s" % (form.greet, form.name)
        return render.index(greeting = greeting)

然后在我的索引html文件中添加以下内容:

$def with (greeting)

<p>
Hi <b>$context.username</b>
</p>
$if greeting:
        I just wanted to say <em style="color: green; font-size: 2em;">$greeting</em>.
$else:
        I just wanted to say <em style="color: green; font-size: 2em;">Default</em>.

<p>
<a href="/hello">Link Back To Form</a>

我提交表单后就看到了这个:  在/你好 'ThreadedDict'对象没有'username'属性

getattr 中的Python /Library/Python/2.7/site-packages/web/session.py,第64行 Web POST /你好

我为什么看到这个?它显然不喜欢我用用户名做的事情,但我不清楚为什么。

1 个答案:

答案 0 :(得分:-1)

如错误所示,context变量(实际映射到session)没有属性username。相反,您已将username定义为全局变量本身。

尝试直接在您的模板中username访问$username,或在app.py中进行作业session['username'] = 'CRC',以便$context.username在您访问时有效模板文件。