使用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>

结果表:
Form image

结果过滤器,具有相似的模式,外加一些表单配置:
Filter image

依赖关系

  1. Django
  2. jQuery(包括3.3.1版)
  3. JSON editor (包括5.9.6版)
  4. parsley(包括2.8.1版)

文档和完整示例

参见readthedocs了解 API、高级用例、参数定义 以及更多信息

example project 对于所有功能,在工作应用程序中使用

口号

With goal to simplify, with love to capybaras

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

推荐PyPI第三方库


热门话题
java文件分块,获取长度字节   java嵌入式Tomcat不执行jsf页面   java我的数据库中有2个实体,但hibernate返回其中6个。   java如何基于逗号拆分字符串   java取消已经运行的CompletableFutures的预期模式是什么   java如何在informix中从另一个数据库复制表ddl和数据   为什么图片是黑色的?   java根据字符串数组中的单词筛选列表   Java8的集合。平行流有效吗?   Kotlin中的java静态内部类   java如何在GUI中生成一列字符串   javafx如何正确使用高对比度主题?   带空格的javascript Httpurlconnection参数   java如何设置GridBagLayout的约束   java如何在一个线程可能尚未初始化时关闭另一个线程   java将简单时间格式转换为特殊时间格式(hhmmt)   安卓/java阵列重复过滤器的问题   java在队列的链接实现下,入队和出队是如何工作的   java更新sql外键约束