我有一个基于类的视图,我希望只有在用户登录时才能访问该视图,并且我希望将未经身份验证的用户重定向回索引页
这是有问题的观点:
class ArtWorkCreate(CreateView, LoginRequiredMixin):
login_url = '/login/'
redirect_field_name = 'login'
model = ArtWork
fields = ['userID','title','medium','status','price','description']
这是相关的模型
class ArtWork(models.Model):
userID= models.ForeignKey(MyUser, on_delete=models.CASCADE)
title = models.CharField(max_length=100)
medium = models.CharField(max_length=50)
price = models.FloatField()
description = models.TextField(max_length=1000)
status = models.CharField(max_length=4, default="SALE")
def __str__(self):
return self.title
这是相关的网址
url(r'artwork/add/$', ArtWorkCreate.as_view(), name='artwork-add'),
这是我想重定向到用户未登录ID的网址
url(r'^index/$', views.index, name='index'),
我的目标是使表单只对登录用户具有accessbile,他们只能以自己的名义添加艺术品项目
最后这是模型表格
class ArtWorkForm(ModelForm):
class Meta:
model = ArtWork
fields = ['title','medium','status','price','description']
答案 0 :(得分:3)
我们应该首先继承LoginRequiredMixin
。因为python会考虑第一个继承类(在本例中)的方法dispatch
。
class ArtWorkCreate(LoginRequiredMixin, CreateView):
login_url = '/index/'
redirect_field_name = 'index'
model = ArtWork
答案 1 :(得分:1)
login_url是未通过测试/身份验证的用户将被重定向到的URL。
redirect_field_name属性应设置为成功登录后将用户重定向到的URL。
答案 2 :(得分:0)
只需在settings.py文件中定义一个登录URL (还要删除该类的登录网址)
#settings.py
LOGIN_URL = 'login'