如何在 django 模板标签中获取当前用户?(请求对象不可访问)或者我如何访问请求对象?
问问题
26998 次
4 回答
17
用户始终附加到请求,在您的模板中,您可以执行以下操作:
{% if user.is_authenticated %}
{% endif %}
您不必指定“请求”来访问其内容
更新:
请注意:is_authenticated()
始终True
为登录用户(User
对象)返回,但False
为AnonymousUser
(访客用户)返回。在这里阅读:https ://docs.djangoproject.com/en/1.7/ref/contrib/auth/
于 2013-02-11T15:15:02.023 回答
6
这个问题已经在这里回答了:
{% if user.is_authenticated %}
<p> Welcome '{{ user.username }}'</p>
{% 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()
在视图和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
于 2017-11-30T23:01:29.840 回答
-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
和合适的模型
于 2020-05-04T20:25:22.660 回答