Ответ 1
Ответ Джозефа подходит для вашего простого случая, но в действительности ни is_staff
ни 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 %}
Или в представлении, использующем has_perm
:
if not request.user.has_perm('poll.change_poll'):
return HttpResponseForbidden('Nope!')
Или в виде с помощью декоратора:
@permission_required('poll.change_poll')
def edit_poll(request, poll_id):
# ....
Вы можете назначить эти разрешения непосредственно пользователю, группе (а затем поместить пользователя в эту группу) или установив is_superuser
.