如何在django模板标签中获取当前用户? (请求对象不可访问) 或者我如何访问请求对象?
答案 0 :(得分:15)
如果要访问模板标记中的当前用户,必须将其作为模板中的参数传递,如下所示:
{% my_template_tag user %}
然后确保您的模板标记接受此额外参数。查看有关此主题的documentation。您还应该查看simple tags。
答案 1 :(得分:11)
用户始终附加到请求,您可以在模板中执行以下操作:
{% if user.is_authenticated %}
{% endif %}
您无需指定“请求”来访问其内容
<强>更新强>
请注意:is_authenticated()
始终为已记录的用户(True
对象)返回User
,但为False
(访客用户)返回AnonymousUser
。请在此处阅读:https://docs.djangoproject.com/en/1.7/ref/contrib/auth/
答案 2 :(得分:2)
这个问题已经answered here:
{% ifuser.is_authenticated %}
Welcome
'{{ user.username }}'
{% else %}
<a href="{% url django.contrib.auth.login %}">Login</a>
{% endif %}
并确保在settings.py中安装了请求模板上下文处理器:
TEMPLATE_CONTEXT_PROCESSORS = (
...
'django.core.context_processors.request',
...
)
注意:
request.user.get_username()
&amp; user.get_username
in
模板。首选直接引用用户名属性。
Source 来源:https://docs.djangoproject.com/en/dev/topics/auth/default/#authentication-data-in-templates
答案 3 :(得分:-1)
假设您有每个注册用户的个人资料页面,并且只想显示个人资料页面所有者的编辑链接(即,如果当前用户正在访问他/她的个人资料页面,则用户可以看到编辑按钮,但用户看不到其他用户的个人资料页面上的编辑按钮。 在您的 html 文件中:
<h2>Profile of {{ object.username }}</h2>
{% if object.username == user.username %}
<a href="{% url 'profile_update' object.pk %}">Edit</a>
{% endif %}
然后您的 urls.py 文件应包含:
from django.urls import path
from .views import ProfileUpdateView
urlpatterns = [
...
path('<int:pk>/profile/update', ProfileUpdateView.as_view(), name = 'profile_update'),
...
]
考虑到您拥有合适的ProfileUpdateView
和合适的型号