使用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如何覆盖本地存储库中现有的Gradle插件?   java如何在没有用户输入的情况下自动返回主菜单?   java Swing模型视图演示器(MVP)示例   Java if语句(初学者请求)   java二维数组列表是如何工作的?   java为什么要列出。添加列表的所有反转子列表会导致ConcurrentModificationException   java Arquillian测试只有放在根包中才能工作   已在运行CMD窗口中的Java run命令   用java中的比较器为每列排序2D数组   java如何选择使用多态性时应调用的方法   是否可以在java中将ArrayList<SelectItem>转换为ArrayList<Long>   数组使用Java中的getJSONArray()和getJSONObject()从JSON文件中获取元素   java ActiveMQ MapMessage接收带有空表的消息   java命名返回布尔值的方法的正确方法是什么?