使用json模式的动态django表单和过滤器
capybara-forms的Python项目详细描述
水豚形态
使用json模式的动态django表单和过滤器。
如果您有两个模型:类别和条目。 一些条目特性取决于它的类别。 使用此库,您将获得易于配置的 带有窗体、筛选器和输入字段生成器的架构。 此外,它还可以处理模型字段。
快速启动
1.定义您的模型
fromdjango.dbimportmodelsfromcapybara_forms.modelsimportCapybaraFormsCategory,CapybaraFormsModelclassCategory(CapybaraFormsCategory):title=models.CharField(max_length=100)classAdvert(CapybaraFormsModel(Category)):# Global model fieldstitle=models.CharField(max_length=100)price=models.PositiveSmallIntegerField()# Rest fields will be stored in JSON 'data' field
2.为类别“cats”编写模式
[{"name":"breed","type":"string","required":true,"display_name":"Breed","placeholder":"Enter breed of your cat"},{"name":"year","type":"number","required":true,"max_value":2020,"min_value":1980,"placeholder":"Enter birth year of your cat","display_name":"Birth year"},{"name":"weight","type":"number","placeholder":"Enter the weight of your cat","display_name":"Weight"},{"name":"height","type":"number","placeholder":"Height (only placeholder, without display name)"},{"type":"color","display_name":"Cat's color"},{"name":"name","type":"string","placeholder":"Enter cat nickname","display_name":"Name"},{"name":"vaccinated","type":"checkbox","display_name":"is vaccinated"}]
3.创建表单。它是一个基本的渲染对象
fromdjangoimportformsfromcapybara_forms.formsimportCapybaraFormsModelFormfrom.modelsimportAdvertclassAdvertForm(CapybaraFormsModelForm):# This fields from model will be rendered using form.render_formfields_in_model=['title','price']# For custom placeholdertitle=forms.CharField(widget=forms.TextInput(attrs={'placeholder':'Enter title'}))classMeta:model=Advertfields=('title','price')
4.在视图中使用此表单
fromdjango.shortcutsimportrender,get_object_or_404,redirectfrom.modelsimportCategoryfrom.formsimportAdvertFormdefadd(request,category_id):category=get_object_or_404(Category,pk=category_id)ifrequest.method=='POST':form=AdvertForm(category,request.POST.dict())ifform.is_valid():form.save()returnredirect('/{0}/'.format(category_id))else:form=AdvertForm(category)returnrender(request,'add.html',{'form':form,})
5.在模板中呈现表单。 注意,库使用parsley 为了验证。下面列出的所有依赖项
<formmethod="POST"data-parsley-validate> {% csrf_token %} {{ form.render_form | safe }} <buttontype="submit">Submit</button></form>
结果表:
结果过滤器,具有相似的模式,外加一些表单配置:
依赖关系
- Django
- jQuery(包括3.3.1版)
- JSON editor (包括5.9.6版)
- parsley(包括2.8.1版)
文档和完整示例
参见readthedocs了解 API、高级用例、参数定义 以及更多信息
见example project 对于所有功能,在工作应用程序中使用
口号
With goal to simplify, with love to capybaras