我试图将我的代码重构为基于类的视图,并且我无法理解如何在最后返回/渲染。我尝试使用提供的POST数据在成功(或失败)时使用适当的确认消息呈现表单,以便可以更新它。这是一些示例代码,评论显示了我想要返回的内容(我不知道如何):
"0.166667 0.166667 0.166667 0.166667 0.166667 0.166667 "
答案 0 :(得分:1)
你不应该在那里做任何事情。如果验证失败,视图已经负责调用验证方法并重新显示表单;仅当表单已有效时才会调用form_valid
。您的用户检查应该进入表单本身:
class ProductCreateForm(forms.ModelForm):
...
def clean_user_email(self):
user = User.objects.filter(username=self.cleaned_data['user_email']).first()
if user is None:
raise forms.ValidationError("Invalid user email specified")
return user
对于第二部分,重定向到更新视图,您可以通过定义get_success_url
方法来实现;它返回的内容取决于您为ProductUpdate视图定义的URL,但假设URL采用id
参数,它将是这样的:
class ProductCreate(CreateView):
def get_success_url(self):
return reverse('product_update', kwargs={'id': self.instance.pk})
这使得form_valid
方法只需要将消息设置为成功,如果您使用contrib.messages中的SuccessMessageMixin,则甚至不需要这样做。