Как создать промежуточное программное обеспечение для проверки разрешений пользователя в Django?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как создать промежуточное программное обеспечение для проверки разрешений пользователя в Django?

Сообщение Anonymous »

Я пытаюсь создать собственную панель администратора в django. Я могу создавать там пользователей и проверять, является ли этот пользователь пользователем_admin или нет. Если пользователь не является администратором, он не сможет посещать страницу панели администратора и не сможет ничего изменять.
Мне нужно создать промежуточное программное обеспечение, чтобы проверить, является ли пользователь администратором. или нет, а если нет, перенаправьте его на домашнюю страницу. Я думаю, мне следует использовать @permission_required, но я не уверен, как использовать его в промежуточном программном обеспечении.
Это функция для создания нового пользователя:

Код: Выделить всё

# views.py
def createNewUser(request):
if request.method == 'POST':
user = User.objects.create(username=request.POST.get('username'),
email=request.POST.get('email'),
password=request.POST.get('password'))
if request.POST.get('is_admin') == 'True':
is_admin = 'True'
else:
is_admin = 'False'
user.user_permissions.clear()
user.save()
useraccount = UserAccount.objects.create(user=user, is_admin=is_admin)
useraccount.save()
return redirect('users')
return render(request, 'adminpanel/create_user.html', {})
Этот пользователь может быть администратором. Если я не установлю флажок, он не является администратором и ему не разрешено ничего делать на этой странице. Я просто удаляю все разрешения. (Я знаю, что, возможно, лучше удалить определенные разрешения, а не все, но это всего лишь пример)
Теперь мне нужно проверять его разрешения перед каждой функцией:

Код: Выделить всё

@permission_required('poll.view_category', login_url='home')
def home(request):
return render(request, 'adminpanel/main.html', {})
Итак, как использовать этот декоратор в промежуточном программном обеспечении? (Он должен вызываться только в запросах панели администратора)
И что лучше использовать промежуточное программное обеспечение на основе функций или классов? В чем разница?

Подробнее здесь: https://stackoverflow.com/questions/766 ... -in-django
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»