0

非常密切地遵循金字塔 wiki 教程,但是当我实际以编辑器身份登录时,我得到了以下信息:

NameError: logged_in

 - Expression: "logged_in"
 - Filename:   /Users/erik/pyramid/tutorial/tutorial/templates/edit.pt
 - Location:   (line 25: col 23)
 - Source:     <span tal:condition="logged_in">
                                    ^^^^^^^^^

检查代码,我发现没有任何机制可以logged_in附加到请求中。

奇怪的是,当我从 URI 中删除注销链接时,模板/edit_page中会正确显示。viewing莫名其妙,在温哥华...

4

1 回答 1

3

logged_in不是请求的一部分,它是由编辑视图传递给模板的数据。查看教程 view.py 中的第72-84 行

@view_config(name='edit_page', context='.models.Page',
             renderer='templates/edit.pt',
             permission='edit')
def edit_page(context, request):
    if 'form.submitted' in request.params:
        context.data = request.params['body']
        return HTTPFound(location = request.resource_url(context))

    logged_in = authenticated_userid(request)

    return dict(page = context,
                save_url = request.resource_url(context, 'edit_page'),
                logged_in = logged_in)

在这里您可以看到logged_in正在通过authenticated_userid调用设置,然后作为返回中字典的一部分传递给模板。

确保您的edit_page视图在 中正确连接view_config并以正确的名称返回logged_in

于 2013-09-03T06:16:16.290 回答