Как я могу ограничить доступ к просмотру только суперпользователям в Django - PullRequest
0 голосов
/ 03 октября 2019

На сайте, который я разрабатываю в Django, я хочу ограничить доступ к представлениям, чтобы только суперпользователи могли получить к ним доступ. Я мог бы использовать @login_required или LoginRequiredMixin, однако у меня уже есть система входа для обычного человека, так что любой зарегистрированный пользователь имеет доступ к представлению.

Я попробовал что-то, что, как я думал, сработало бы SuperUserRequired как миксин, однако это, очевидно, не сработало.

Это должно быть в состоянии работать в CBV, так как эточто я использую для этого представления. Вот соответствующий вид, к которому я хочу применить это ограничение.

class CreatePostView(LoginRequiredMixin,CreateView):
    redirect_field_name = 'posts/post_detail.html'
    form_class = PostForm
    model = Post
    def form_valid(self,form):
        form.instance.author = self.request.user
        return super().form_valid(form)

Спасибо за любую помощь, которую вы можете оказать:)

1 Ответ

2 голосов
/ 03 октября 2019

Я думаю, вам нужен этот миксин , описанный в документации. По сути, это дает вам возможность проверить, имеет ли пользователь права доступа или нет. Ниже также приведен модифицированный код из документов:

from django.contrib.auth.mixins import UserPassesTestMixin

class MyView(UserPassesTestMixin, View):
    def test_func(self):
        return self.request.user.is_superuser
...