Django 使createview对应的表单仅在用户登录时才可访问
我有一个项目的以下模型:Django 使createview对应的表单仅在用户登录时才可访问,django,django-views,Django,Django Views,我有一个项目的以下模型: #models.py class Item(models.Model): seller = models.ForeignKey(settings.AUTH_USER_MODEL) name = models.CharField(max_length=200) 要制作一个新项目,我有一个位于www.mysite.com/new-item的表格。当前登录的用户将自动设置为物品的卖家,因此不会显示在表单中 #forms.py class ItemCreati
#models.py
class Item(models.Model):
seller = models.ForeignKey(settings.AUTH_USER_MODEL)
name = models.CharField(max_length=200)
要制作一个新项目,我有一个位于www.mysite.com/new-item的表格。当前登录的用户将自动设置为物品的卖家,因此不会显示在表单中
#forms.py
class ItemCreationForm(forms.ModelForm):
class Meta:
model = Item
fields = ['name',]
下面是相应的视图
#views.py
class AddNewItem(CreateView):
model = Item
form_class = ItemCreationForm
template_name = 'add_listing.html'
success_url = '/listings/'
def form_valid(self, form):
item = form.save(commit=False)
#if not self.request.user.is_anonymous and self.request.user.is_email_verified:
item.seller = self.request.user
#else:
# return redirect('accounts/login/')
item.save()
return super(AddNewListing, self).form_valid(form)
注释掉的行是我遇到的问题。我希望用户只有在登录后才能访问www.mysite.com/new-item。如果他不是,我希望他被重定向到注册页面。现在,无论我是否注册,我都可以进入表单,并且只有在按下表单上的提交按钮时,我才会被重定向到此页面。我还尝试将@login\u required decorator放在form\u有效方法之上,但没有成功
谁能给我一些关于我做错了什么的建议?谢谢 通过一些游戏,我终于通过使用mixin实现了这一点
class AddNewItem(LoginRequiredMixin, CreateView):
model = Item
form_class = ItemCreationForm
login_url = "/signup/"
....
比我想象的容易多了