The permission required decorator helps you control who can access certain parts of your Django app. It makes sure only users with the right permissions can see or use specific views.
Permission required decorator in Django
@permission_required('app_label.permission_codename', login_url=None, raise_exception=False) def your_view(request): # view code here
The decorator takes the permission as a string in the format 'app_label.permission_codename'.
You can set login_url to redirect unauthorized users to a custom page.
@permission_required('polls.add_choice') def add_choice(request): # code to add a choice
@permission_required('auth.change_user', login_url='/login/') def edit_user(request): # code to edit user
@permission_required('blog.delete_post', raise_exception=True) def delete_post(request): # code to delete a post
This simple Django view uses the permission required decorator to allow only users with the 'view_poll' permission in the 'polls' app to access it. If the user does not have permission, they are redirected to '/login/'.
from django.contrib.auth.decorators import permission_required from django.http import HttpResponse @permission_required('polls.view_poll', login_url='/login/') def view_poll(request): return HttpResponse('You can see this poll because you have permission!')
Make sure the permission codename matches exactly what is defined in your app's models.
If you set raise_exception=True, unauthorized users get a 403 Forbidden error instead of redirect.
Use this decorator only on views that require user authentication and permission checks.
The permission required decorator controls access to views based on user permissions.
It helps keep your code clean and secure by handling permission checks automatically.
You can customize behavior for unauthorized users with login_url or raise_exception.