如何在 Django 中使用基于类的视图将用户重定向到登录页面? [复制]

Posted

技术标签:

【中文标题】如何在 Django 中使用基于类的视图将用户重定向到登录页面? [复制]【英文标题】:How to redirect users to login page with a class based view in Django? [duplicate] 【发布时间】:2020-01-23 06:48:45 【问题描述】:

所以基本上我希望未登录的用户在尝试访问创建帖子或个人资料页面等页面时被发送到登录页面。我知道这是如何使用基于函数的视图来完成的,但我很好奇如何在 CBV 中做到这一点。

class CreatePostView(LoginRequiredMixin,CreateView):
    # ... view here

我想知道如果没有登录我将如何重定向用户

我是否需要另一个函数来执行此操作,或者 Django 中是否有允许这种情况发生的东西? 谢谢:)

【问题讨论】:

查看***.com/questions/37596791/… class CreatePostView(LoginRequiredMixin,CreateView): 会自动将匿名用户重定向到登录页面。只需在设置中设置LOGIN_REDIRECT_URL,或在视图中设置login_url 【参考方案1】:

您可以在 views.py

中执行此操作
class PostUpdateView(LoginRequiredMixin, UserPassesTestMixin, UpdateView):
    model = posts
    fields = ['Title','Post_content']

    def form_valid(self, form):
        form.instance.Name = self.request.user
        return super().form_valid(form)

    def test_func(self):
        post = self.get_object()
        if self.request.user == post.Name:
            return True
        return False

【讨论】:

以上是关于如何在 Django 中使用基于类的视图将用户重定向到登录页面? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Django 1.3 中使用基于类的视图重定向条件?

如何正确地将参数传递给 Django 中的基于类的视图实例?

如何在 django 中使用基于类的视图

我如何将 django fbv 写入基于类的视图

在基于 django rest 类的视图中允许不同类型的用户使用不同的视图

Django:在基于类的视图中包含媒体(css/js)