0

以下是我的视图文件的一部分

def user_detail(request, username,
    template_name='auth/user_detail.html', extra_context=None):
    context = {
        'user': shortcuts.get_object_or_404(User, username=username)
    }
    context.update(extra_context or {})
    return shortcuts.render(request, template_name, context)

我的模板的一部分是

 <ul class="nav">
    {% if request.user.username != 'steve' %}
    <li>
        <a href="{% url 'user_detail' 'steve' %}">Steve</a>
    </li>
    {% endif %}
    {% if request.user.username != 'james' %}
    <li>
        <a href="{% url 'user_detail' 'james' %}">James</a>
    </li>
    {% endif %}
</ul>

但是,即使我使用这些用户中的任何一个登录,我仍然会显示此链接。这是因为我正在检查request.user.username并且请求变量没有被渲染函数传递给模板。

如果我直接引用 user.username 则很好,但这不是我想要解决这个问题的方式,因为还有其他类似的视图返回这个request我必须使用的变量。

这都是django-subscriptionyourlabs fork的一部分。我以前没有使用过,所以我不知道为什么会收到此错误。render shortcut

任何帮助将不胜感激。

4

1 回答 1

2

所做的render只是确保模板使用. RequestContext反过来,这仅仅意味着上下文处理器正在运行。

默认情况下不启用上下文request处理器。如果需要,您必须自己添加。但是,在您的情况下,您实际上并不需要它,因为您只对用户感兴趣 -处理器将其作为变量提供。settings.CONTEXT_PROCESSORSauthuser

所以,总而言之,改成request.user公正user,一切都会好起来的。

于 2011-12-24T22:00:16.520 回答