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