Posted November 05, 2018
今天讲述三点关于 Mixins 使用的一些规范:
下面举例说明规则
class FormMessageMixin(object):
@property
def form_valid_message(self):
return NotImplemented
form_invalid_message = 'Please correct the errors below.'
def form_valid(self, form):
messages.success(self.request, self.form_valid_message)
return super(FormMessageMixin, self).form_valid(form)
def form_invalid(self, form):
messages.error(self.request, self.form_invalid_message)
return super(FormMessageMixin, self).form_invalid(form)
class DocumentCreateView(FormMessageMixin, CreateView):
model = Document
fields = ('name', 'file')
success_url = reverse_lazy('documents')
form_valid_message = 'The document was successfully created!'
依类似的方式, 你可以在UpdateView中, 重用相同的FormMessageMixin, 并覆盖默认的form_invalid_message
方法.
class DocumentUpdateView(FormMessageMixin, UpdateView):
model = Document
fields = ('name', )
success_url = reverse_lazy('documents')
form_valid_message = 'The document was successfully updated!'
form_invalid_message = 'There are some errors in the form below.'
Django 1.9开始, 内置的LoginRequiredMixin和UserPassesTestMixin. 如果你要在视图中使用它们, 它们始终位于最左侧:
Mixins在左,View在后
class DocumentUpdateView(LoginRequiredMixin, FormMessageMixin, UpdateView):
model = Document
fields = ('name', )
success_url = reverse_lazy('documents')
form_valid_message = 'The document was successfully updated!'
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有