我正在使用django注册,然后将其设置。

{{user.is_authenticated }}

是真的,即使我已经去了/帐户/注销/并记录了用户。

{{user.is_anonymous }} 

也返回正确。根据Django文档的说法,这两个应该有所不同:

is_Anonymous:始终返回false。这是区分用户和匿名对象的一种方式。通常,您应该更喜欢使用is_authenticatienated()而不是此方法。

IS_Authenticated:始终返回true。这是一种判断用户是否已进行身份验证的方法。这并不意味着任何权限,也不会检查用户是否处于活动状态 - 它仅表示用户提供了有效的用户名和密码。

我正在使用Django注册随附的标准视图,但尚未触摸它们。在Tempalate中,我有以下代码:

{% if user.is_authenticated %}
{% user }}
{% if user.is_anonymous %}
    is anonymous
{% endif $}
{% else %}
    gotta login
{% endif %}

问题在哪里?我真的很感激!

更新:我已经注意到,在主页上,它既iS_Authenticatiencatiencated and ID_Anonymous return true true true true true true true,而如果我访问 /帐户 /登录之前,则只有IS_Anonymous返回true true。而且,在主页上,我有以下视图是否有帮助:

def home(request):
    return render_jinja(request, 'index.html', blah = 'ga')

更新2:print(request.user.is_authenticated())给出false。然后,我有:

return render_jinja(request, 'index.html', blah = 'ga')

在模板中,user.is_authenticated返回false。

更新3:如果我使用render_to_response,而不是render_jinja,则一切都很好。仍然不知道如何解决这个问题:(

有帮助吗?

解决方案

似乎您正在尝试一次弄清楚两件事。什么是使用Jinja模板的正确方法,以及与用户/匿名者的处理方式。也许尝试一次弄清楚这些问题。

我没有Jinja的经验,但您可能需要检查并确保您正在服用 Jinja和Django模板语法之间的差异 考虑到。我知道的最大区别是方法调用需要明确的括号。因此,您的示例中需要括号中的is_authenticatiencatiencated和is_Anonymous调用。

Jinja style {{ user.is_authenticated() }}
Django style {{ user.is_authenticated }} 

如果那无法解决问题,请尝试安装 django-debug-toolbar 并查看模板的上下文。检查并查看是否 user 是一个或一个对象(用户或匿名者)。

您也可以阅读 匿名者 并看到一个例子 检查身份验证的用户 在文档中。简而言之,对于匿名对象is_anonymous()总是返回true而不是false,并且is_authenticatiencatiencatiencatiencation()始终返回false而不是true。

其他提示

在头上sm。我在某个地方读了:

如果user.is_authenticated:....#始终是正确的,因为这是一种方法!

因此,它不应在模板中{{user.is_authenticatiencatiencation}}中,而应为{{user.is_authenticated()}}}

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top