如何在模板标签中获取当前用户?

tap*_*123 15 django django-templates

如何在django模板标签中获取当前用户?(请求对象不可访问)或者如何访问请求对象?

msc*_*msc 15

如果要在模板标记中访问当前用户,则必须将其作为模板中的参数传递,如下所示:

{% my_template_tag user %}
Run Code Online (Sandbox Code Playgroud)

然后确保您的模板标记接受此额外参数.查看有关此主题的文档.您还应该查看简单标签.


dav*_*ode 12

用户始终附加到请求,您可以在模板中执行以下操作:

{% if user.is_authenticated %}
{% endif %}
Run Code Online (Sandbox Code Playgroud)

您不必指定"请求"来访问其内容

更新:

注意:is_authenticated()始终返回True的登录用户(User对象),但回报False为AnonymousUser(guest用户).在这里阅读:https://docs.djangoproject.com/en/1.7/ref/contrib/auth/

  • 这不是主题 (4认同)

jav*_*zac 6

这个问题已经在这里回答:

{% if user.is_authenticated %}
    <p> Welcome '{{ user.username }}'</p>
{% else %}
    <a href="{% url django.contrib.auth.login %}">Login</a>
{% endif %}
Run Code Online (Sandbox Code Playgroud)

并确保在 settings.py 中安装了请求模板上下文处理器:

TEMPLATE_CONTEXT_PROCESSORS = (
...
'django.core.context_processors.request',
...
)
Run Code Online (Sandbox Code Playgroud)

笔记:

  • 使用request.user.get_username()中的意见和user.get_username模板。优先于直接引用用户名属性。 来源
  • 如果使用 RequestContext,则此模板上下文变量可用。
  • django.contrib.auth.context_processors.auth 默认启用并包含变量 user
  • 您不需要启用 django.core.context_processors.request 模板上下文处理器。

来源:https : //docs.djangoproject.com/en/dev/topics/auth/default/#authentication-data-in-templates