Rus*_*sty 32 django django-admin
如何从视图或模板文件中检测我的管理员用户是否已登录?例如,我的网站的用例:
/admin/,输入正确的凭据/page/"添加"和"删除"按钮/admin/并单击"注销"/page/ - >没有"添加"和"删除"按钮Django 1.4版
Joe*_*nin 83
在模板中:
{% if user.is_superuser %}
<p>Hello, admin.</p>
{% else %}
<p>Hello, ordinary visitor.</p>
{% endif %}
Run Code Online (Sandbox Code Playgroud)
在视图中:
if request.user.is_superuser:
# Hello, admin.
else:
# Hello, ordinary visitor.
Run Code Online (Sandbox Code Playgroud)
根据您的需要,is_staff可能比您更合适is_superuser.你可以在这里阅读有关的区别.
sup*_*cuo 16
对于你的简单案例,约瑟夫的答案很好,但实际上既不是is_staff也不is_superuser是完美契合.假设您的页面是/polls/(Poll对象列表,在应用程序中称为poll),您应该测试特定poll.change_poll和poll.delete_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 %}
Run Code Online (Sandbox Code Playgroud)
或者在视图中使用has_perm:
if not request.user.has_perm('poll.change_poll'):
return HttpResponseForbidden('Nope!')
Run Code Online (Sandbox Code Playgroud)
或者在使用装饰器的视图中:
@permission_required('poll.change_poll')
def edit_poll(request, poll_id):
# ....
Run Code Online (Sandbox Code Playgroud)
您可以将这些权限直接分配给用户,组(然后将用户放入该组)或通过设置is_superuser.
| 归档时间: |
|
| 查看次数: |
31094 次 |
| 最近记录: |