前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Django小技巧15: 使用基于类视图的Mixins

Django小技巧15: 使用基于类视图的Mixins

作者头像
用户1416054
发布2018-12-06 11:20:57
1K0
发布2018-12-06 11:20:57
举报

Django小技巧15: 使用基于类视图的Mixins

Posted November 05, 2018

翻译整理自: simpleisbetterthancomplex.com

今天讲述三点关于 Mixins 使用的一些规范:

  • Django 提供的View 保持在继承的最右边.
  • Mixins 在基本视图的左侧
  • Mixins 应该继承Python的内置对象类型(object).

下面举例说明规则

Python

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方法.

Python

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. 如果你要在视图中使用它们, 它们始终位于最左侧:

Python

Mixins在左,View在后

class DocumentUpdateView(LoginRequiredMixin, FormMessageMixin, UpdateView):
    model = Document
    fields = ('name', )
    success_url = reverse_lazy('documents')
    form_valid_message = 'The document was successfully updated!'
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Django小技巧15: 使用基于类视图的Mixins
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档