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

Django 如何在模板标记中获取当前用户?,django,django-templates,Django,Django Templates,如何在django模板标签中获取当前用户?(请求对象不可访问) 或者如何访问请求对象?用户始终附加到请求,在模板中,您可以执行以下操作: {% if user.is_authenticated %} {% endif %} 您不必指定“请求”来访问其内容 更新: 请注意:is_authenticated()始终为登录用户(user对象)返回True,但为匿名用户(来宾用户)返回False。阅读此处:如果要访问模板标记中的当前用户,必须将其作为模板中的参数传递,如下所示: {% my_templ

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

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

{% if user.is_authenticated %}
{% endif %}
您不必指定“请求”来访问其内容

更新:


请注意:
is_authenticated()
始终为登录用户(
user
对象)返回
True
,但为
匿名用户(来宾用户)返回
False
。阅读此处:

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

{% my_template_tag user %}
然后确保模板标记接受这个额外的参数。查看有关此主题的详细信息。您还应该查看。

这个问题已经是:

注:

  • 在视图中使用
    request.user.get_username()
    ,&
    user.get_username
    in 模板。优先于直接引用用户名属性。
  • 如果使用RequestContext,则此模板上下文变量可用
  • django.contrib.auth.context_processors.auth默认启用&包含变量user
  • 您不需要启用django.core.context_processors.request template context processor

来源:

假设您拥有每个注册用户的配置文件页面,并且您只想向配置文件页面的所有者显示编辑链接(即,如果当前用户正在访问其配置文件页面,则用户可以看到编辑按钮,但用户看不到其他用户配置文件页面上的编辑按钮)。 在您的html文件中:

<h2>Profile of {{ object.username }}</h2>
{% if object.username == user.username %}
    <a href="{% url 'profile_update' object.pk %}">Edit</a>
{% endif %}
{{object.username}的配置文件 {%if object.username==user.username%} {%endif%}
那么您的url.py文件应该包含:

from django.urls import path
from .views import ProfileUpdateView
urlpatterns = [
    ...
    path('<int:pk>/profile/update', ProfileUpdateView.as_view(), name = 'profile_update'),
    ...
]
从django.url导入路径
从.views导入ProfileUpdateView
URL模式=[
...
路径('/profile/update',ProfileUpdateView.as_view(),name='profile_update'),
...
]

考虑到您有合适的
ProfileUpdateView
和合适的模型,您可以将其创建为上下文处理器,而不是创建模板标记并始终在模板中调用它。在上下文处理器中,您可以获得用户,而无需始终在模板中调用函数。对于一行模板标记来说非常复杂。真的是djan吗这么不顺利吗?或者试着把它放到你的模板{{user.username}那么你想展示什么呢?如果没有用,那么你的问题就不完整了。如果你真的想得到帮助,请说得更具体一些,并给出示例。问题很清楚,他想在模板标签
user中访问当前用户。是否经过身份验证
总是返回true,因此基本上没有用。不!对于用户,它总是返回true(已登录的),但对于匿名用户返回false,因此不是无用的!请仔细阅读此处:
<h2>Profile of {{ object.username }}</h2>
{% if object.username == user.username %}
    <a href="{% url 'profile_update' object.pk %}">Edit</a>
{% endif %}
from django.urls import path
from .views import ProfileUpdateView
urlpatterns = [
    ...
    path('<int:pk>/profile/update', ProfileUpdateView.as_view(), name = 'profile_update'),
    ...
]