Django:在视图或模板中检测管理员登录
如何从视图或模板文件中检测我的管理员用户是否已登录?例如,我的站点的用例:Django:在视图或模板中检测管理员登录,django,django-admin,Django,Django Admin,如何从视图或模板文件中检测我的管理员用户是否已登录?例如,我的站点的用例: 用户打开/admin/,输入正确的凭据 然后用户打开一些页面,例如/page/,并有“添加”和“删除”按钮 用户打开/admin/并单击“注销” /page/->没有“添加”和“删除”按钮 Django版本1.4在模板中: {% if user.is_superuser %} <p>Hello, admin.</p> {% else %} <p>Hello, ordin
/admin/
,输入正确的凭据/page/
,并有“添加”和“删除”按钮/admin/
并单击“注销”/page/
->没有“添加”和“删除”按钮{% if user.is_superuser %}
<p>Hello, admin.</p>
{% else %}
<p>Hello, ordinary visitor.</p>
{% endif %}
根据您的需要,
is\u员工
可能比is\u超级用户
更适合您。你可以了解其中的区别。约瑟夫的回答适合你的简单案例,但实际上无论是是员工还是是超级用户都不是完美的选择。假设你的页面是,比如说,/polls/
(一个名为Poll
的应用程序中的Poll
对象列表),你应该测试特定的Poll.change\u Poll
和Poll.delete\u Poll
在模板中:
{% for poll in polls %}
{% if perms.poll.change_poll %}<a href='/polls/edit/{{ poll.id }}'>Edit</a>{% endif %}
{% if perms.poll.delete_poll %}<a href='/polls/delete/{{ poll.id }}'>Delete</a>{% endif %}
{% endfor %}
或者从某种角度来看:
您可以直接将这些权限分配给用户、组(然后将用户放入该组),或者通过设置is\u superuser
来分配这些权限。如果您不关心用户拥有的权限,只想确保他们已登录,您可以使用user.is\u anonymous
,如果用户注销,则为true;如果用户登录,则为false
默认情况下,用户需要user.is\u staff
才能访问Django管理员。请将正确的注释设置为解决方案!“权限”页面不工作,请更新;
{% for poll in polls %}
{% if perms.poll.change_poll %}<a href='/polls/edit/{{ poll.id }}'>Edit</a>{% endif %}
{% if perms.poll.delete_poll %}<a href='/polls/delete/{{ poll.id }}'>Delete</a>{% endif %}
{% endfor %}
if not request.user.has_perm('poll.change_poll'):
return HttpResponseForbidden('Nope!')
@permission_required('poll.change_poll')
def edit_poll(request, poll_id):
# ....