django不允许用户访问页面

时间:2017-02-12 13:30:51

标签: python django

views.py

class DashboardNewProfile(LoginRequiredMixin, CreateView):
    form_class = ProfileForm
    model = Profile
    queryset = Profile.objects.all()
    template_name = 'profile/profile_create.html'

    def _usercheck(self):
        u = self.request.user
        qs = Profile.objects.all().filter(u)
        if qs is None:
            return HttpResponseRedirect('/profile/create/')
        else:
            return HttpResponseRedirect('/profile/view/')

    def get_form_kwargs(self):
        kwargs = super(DashboardNewProfile, self).get_form_kwargs()
        kwargs.update({'user': self.request.user})
        kwargs.update({'slug': self.request.user.username})
        return kwargs

urls.py

url(r'^profile/create/$', views.DashboardNewProfile.as_view(), name="new_profile"),

我如何做以下事情? 如果登录用户已具有与数据库中的配置文件对象关联的配置文件。我不希望用户访问网址(&#39; / profile / create /&#39;)我希望用户自动重定向到另一个网址(&#39; /个人资料/视图&#39;)< / p>

1 个答案:

答案 0 :(得分:0)

为了更改LoginRequiredMixin的作用,您需要覆盖dispatch方法,该方法检查用户是否已登录。看起来您真正想要的是{{ 1}}装饰者:

user_passes_test

Documentation for user_passes_test

Documentation for method_decorator

Documentation for filtering

请注意,如果您愿意,还有一个UserPassesTestMixin,我通常会将这些测试分开,以便可以在其他视图中使用它们,并且更喜欢装饰器的外观。