django的基于类的视图
django-ptree-extra-views的Python项目详细描述
django的基于类的泛型视图非常好,它们允许您在相对较少的代码行中完成大量web应用程序设计模式。不过,它们确实有它们的局限性,而这正是这个视图库要克服的。
安装
从github安装。
pip install -e git://github.com/tomchristie/django-extra-views.git#egg=django-extra-views
迄今为止的功能
- formset和modelformset视图-相当于formview和modelformview的formset。
- inlineformsetview-用于编辑与模型相关的表单集(使用inlineformset工厂)
- genericinlineformsetview,等同于inlineformsetview,但用于genericforeignkeys
- createWithInlinesView和updateWithInlinesView-用于编辑模型及其关系
- 支持CreateWithInlinesView和UpdateWithInlinesView中的通用内联线
注释
- NamedFormsetMixin删除-上下文行为直接烘焙成视图,用^ {Tt1} $和^ {TT2}$。
- 删除了MultiFormView,SearchableMixin,SortableListMixin,CalendarMonthView。
- InlineFormSet和GenericFormSet类现在只是常规类,而不是视图。
仍要执行
在modelformsetview及其派生程序中添加对分页的支持现在应该更简单了。
示例
定义窗体集视图。
from extra_views import FormSetView class AddressFormSet(FormSetView): form_class = AddressForm template_name = 'address_formset.html'
定义ModelFormSetView。
from extra_views import ModelFormSetView class ItemFormSetView(ModelFormSetView): model = Item template_name = 'item_formset.html'
定义CreateWithInlinesView和UpdateWithInlinesView。
from extra_views import CreateWithInlinesView, UpdateWithInlinesView, InlineFormSet from extra_views.generic import GenericInlineFormSet class ItemInline(InlineFormSet): model = Item class TagInline(GenericInlineFormSet): model = Tag class CreateOrderView(CreateWithInlinesView): model = Order inlines = [ItemInline, TagInline] class UpdateOrderView(UpdateWithInlinesView): model = Order inlines = [ItemInline, TagInline] # Example URLs. urlpatterns = patterns('', url(r'^orders/new/$', CreateOrderView.as_view()), url(r'^orders/(?P<pk>\d+)/$', UpdateOrderView.as_view()), )