@nekolov

Существует ли декоратор в django для задания прав доступа к необходимой функции в View?

Добрый день,

Разбираюсь с FW Django подскажите можно ли в VIew.py добавить над каждым path() декоратор и в нем указать имя группы пользователей которым разрешен доступ?
Создал супер пользователя, зашел в админку но не понял как там я могу задать необходимые права моему юзеру для доступа только к определенным методам. В декораторе @login_required который используется в Models насколько я понял мы не можем передавать имя роли пользователям которым разреш доступ к соответствующему методу.

PS: Извиняюсь если вопрос технически не совсем грамотный.

Пример моего Urls.py:

path('accueil', views.connexion , name='connexion'),
    path('accueilEmploye', views.connexionEmploye , name='connexion'),
    path('deconnexion', views.deconnexion, name='deconnexion'),
    path('liste_projets/<int:id>', views.list_projet), #client
    path('liste_tickets/<int:id_projet>', views.list_tickets), #client
    path('ajout_tickets/<int:id_ticket>', views.add_ticket), #client
    path('liste_demande', views.list_projets_clients), 
    path('affectation_ticket/<int:id_projet>', views.liste_tickets_clients),
    path('liste_tickets_assigne/<int:id_ticket>', views.liste_tickets_assigne),

    path('detail_tickets_assigne/<int:id_ticket>', views.detail_ticket_assigne),


Вот Models.py моя цель ограничить доступ некоторых пользователей к не некоторым метода
from django.shortcuts import render
from django.shortcuts import render
from django.contrib.auth.decorators import login_required
from django.contrib.auth import logout
from django.shortcuts import render
from django.core.urlresolvers import reverse

# Create your views here.
def connexion(request):
	error = False

    if request.method == "POST":
        form = ConnexionForm(request.POST)
        if form.is_valid():
            username = form.cleaned_data["username"]
            password = form.cleaned_data["password"]
            user = authenticate(username=username, password=password)  # Nous vérifions si les données sont correctes
            if user:  # Si l'objet renvoyé n'est pas None
                login(request, user)  # nous connectons l'utilisateur
            else: # sinon une erreur sera affichée
                error = True
    else:
        form = ConnexionForm()

    return render(request, 'appticket/connexion.html', locals())



def deconnexion(request):
    logout(request)
    return redirect(reverse(connexion))

@login_required
def list_projet(request,id):
	try:
		projets = Projet.objects.get(client=id)
	except Projet.DoesNotExist:
		raise Http404
	return render(request, 'blog/list_projet.html', {'projets': projets})


@login_required
def list_tickets(request,id_projet):
	try:
		tickets = Ticket.objects.get(projet=id_projet)
	except Ticket.DoesNotExist:
		raise Http404
	return render(request, 'blog/list_tickets.html', {'tickets': tickets})


@login_required
def add_ticket(request,id_ticket):
	ticket = 0;
	try:
		ticket = Ticket.objects.get(id=id_ticket)
	except Ticket.DoesNotExist:
		raise Http404
	return render(request, 'blog/add_ticket.html', {'ticket': ticket})

@login_required
def list_projets_clients(request):
	try:
		projets = Projet.objects.all()
	except Projet.DoesNotExist:
		raise Http404
	return render(request, 'blog/list_projets_clients.html', {'projets': projets})

@login_required
def liste_tickets_clients(request,id_projet):
	try:
		tickets = Ticket.objects.get(projet=id_projet)
	except Ticket.DoesNotExist:
		raise Http404
	return render(request, 'blog/liste_tickets_clients.html', {'tickets': tickets})


@login_required
def liste_tickets_assigne(request,id_ticket):
	try:
		ticket = Ticket.objects.get(id=id_projet)
	except Ticket.DoesNotExist:
		raise Http404
	return render(request, 'blog/liste_tickets_assigne.html', {'ticket': ticket})


@login_required
def add_ticket(request,id_ticket):
	ticket = 0;
	try:
		ticket = Ticket.objects.get(id=id_ticket)
	except Ticket.DoesNotExist:
		raise Http404
	return render(request, 'blog/det_ticket.html', {'ticket': ticket})
  • Вопрос задан
  • 372 просмотра
Пригласить эксперта
Ответы на вопрос 1
@x_dmitry_x
Если я правильно понял автора, то нужен @permission_required
https://docs.djangoproject.com/en/2.1/topics/auth/...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы