django的基于类的视图

django-extra-views的Python项目详细描述


traviscodecov

django extra views-django缺少的基于类的泛型视图

django的基于类的泛型视图非常好,它们允许您在相对较少的代码行中完成大量web应用程序设计模式。不过,它们确实有它们的局限性,而这正是这个视图库要克服的。

安装

从pypi安装(使用pip)。

pip install django-extra-views

从github安装。

pip install -e git://github.com/AndrewIngram/django-extra-views.git#egg=django-extra-views

请参见documentation here

迄今为止的功能

  • formset和modelformset视图-相当于formview和modelformview的formset。
  • inlineformsetview-用于编辑与模型相关的表单集(使用inlineformset工厂)
  • createWithInlinesView和updateWithInlinesView-用于编辑模型及其关系
  • genericinlineformsetview,等同于inlineformsetview,但用于genericforeignkeys
  • 支持CreateWithInlinesView和UpdateWithInlinesView中的通用内联线
  • 支持用NamedFormsetsMixin
  • 命名每个内联或窗体集 <> LI> SoTabLelistMIXIN:在您的观点中分类功能的通用混合蛋白
  • SaleCabelististMIXIN:在您的视图
  • 中搜索功能的通用混合函数

仍有待解决

我想在modelformsetview及其派生程序中添加对分页的支持,目标是能够模拟django的管理中的change_list视图。目前,这是困难的,因为Django的多对象Objixin如何处理分页。

示例

定义窗体集视图。

fromextra_viewsimportFormSetViewclassAddressFormSet(FormSetView):form_class=AddressFormtemplate_name='address_formset.html'

定义ModelFormSetView。

fromextra_viewsimportModelFormSetViewclassItemFormSetView(ModelFormSetView):model=Itemtemplate_name='item_formset.html'fields='__all__'

定义CreateWithInlinesView和UpdateWithInlinesView。

fromextra_viewsimportCreateWithInlinesView,UpdateWithInlinesView,InlineFormSetFactoryfromextra_views.genericimportGenericInlineFormSetFactoryclassItemInline(InlineFormSetFactory):model=Itemfields='__all__'classTagInline(GenericInlineFormSetFactory):model=Tagfields='__all__'classCreateOrderView(CreateWithInlinesView):model=Orderinlines=[ItemInline,TagInline]fields='__all__'classUpdateOrderView(UpdateWithInlinesView):model=Orderinlines=[ItemInline,TagInline]fields='__all__'# Example URLs.urlpatterns=[url(r'^orders/new/$',CreateOrderView.as_view()),url(r'^orders/(?P<pk>\d+)/$',UpdateOrderView.as_view()),]

其他功能

如果您希望对窗体集的名称进行更多的控制(而不是迭代内联),则可以使用NAMEDFFESTSESMIXIN。

fromextra_viewsimportNamedFormsetsMixinclassCreateOrderView(NamedFormsetsMixin,CreateWithInlinesView):model=Orderinlines=[ItemInline,TagInline]inlines_names=['Items','Tags']fields='__all__'

可以通过添加SexChabLeMIXE和设置SexCHyField:

向ListVIEW添加搜索功能
fromdjango.views.genericimportListViewfromextra_viewsimportSearchableListMixinclassSearchableItemListView(SearchableListMixin,ListView):template_name='extra_views/item_list.html'search_fields=['name','sku']model=Item

在这种情况下,如果提供了'q'查询字符串(如/searchable/?Q=查询),或者您 可以手动重写get_search_query方法,以定义自己的搜索功能。

也可以将search_fields中的某些项定义为元组(例如[('name', 'iexact', ), 'sku']) 为搜索提供自定义查找。默认查找为icontains。我们强烈建议只使用 字符串查找,在比较之前,数字字段将转换为字符串以防止转换错误。 这是由SturChabeliMin的^ {TT6}$设置控制的。

在视图中定义排序。

fromdjango.views.genericimportListViewfromextra_viewsimportSortableListMixinclassSortableItemListView(SortableListMixin,ListView):sort_fields_aliases=[('name','by_name'),('id','by_id'),]model=Item

通过定义“排序字段别名”属性,可以隐藏查询字符串中的实数字段名(请参见示例) 或者通过定义排序字段按原样显示它们。SoTabLelistMIN添加了{TT7}$$ SoTelPEL类变量, 然后在模板中可以使用帮助函数:{{ sort_helper.get_sort_query_by_FOO }}{{ sort_helper.get_sort_query_by_FOO_asc }}{{ sort_helper.get_sort_query_by_FOO_desc }}{{ sort_helper.is_sorted_by_FOO }}

更多描述性的例子。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何在springmvc POST webservice中验证集合?   java将变量传递到@Optional注释   浮点Java字节到浮点   java为什么我的结果字符串在解析json数据后不打印到logcat?   多线程应用程序中的java可选调试输出是为客户机提供的,而不是为了找出死锁或bug   java Hibernate模型对象作为VO对象   java字体未应用于复选框并切换到Android Studio 3   list Java equals方法无法按预期工作   java将未知对象强制转换为特定接口可以吗?   调用后未擦除方法中的Java变量   数组求和不正确,线程“main”java中出现异常。lang.ArrayIndexOutofBounds异常:100   java超级类应该实例化并调用其子类吗?   在java apache中。平民io,如何避免读取旧的日志消息   BuffereImage如何使用apache在TIFF图像中保持透明性。平民java中的图像处理   java转换。将文件分类为二进制代码(1和0)   Java:。类搜索器   java如何使用谓词生成器返回“Todays Orders”