【问题标题】:Django validate form fields manuallyDjango 手动验证表单字段
【发布时间】:2016-04-08 02:39:04
【问题描述】:

我有一个动态生成的表单。我无法预先预测将包含多少文本输入或多项选择。因此,我不能使用ModelForm 或类似的东西。

我想知道我是否可以利用 Django 字段的内置验证代码并以某种方式手动应用它们,因为我可以确定用户输入的类型(例如,是否是文本、单选按钮、复选框等)。像这样的东西会很棒:

if type == 'Text':
    #perform validation
    #get clean data
elif type == 'Checkbox':
    #perform validation 
    #get clean data

更新:我的网站允许用户根据自己的需要生成调查。例如,用户决定创建一个包含两个问题的调查:

  1. 你叫什么名字?
  2. 您的智能手机品牌是什么? A) iPhone B) HTC

第一个问题是<input type="text">,第二个问题是<input type="radio">

关于生成什么类型​​的问题的信息存储在数据库中。所以我会在数据库中有这样的行来描述这个问题:

ID 类型文本
1 TEXT 你叫什么名字?
2 RADIO 你叫什么名字?

当调查上线并有用户填写时。我需要验证他们的输入。如何利用 Django 的内置验证功能来处理这种情况?

【问题讨论】:

    标签: python django django-forms django-validation


    【解决方案1】:

    我建议您使用model formsets,因为它们在这里正是您所说的原因:处理任意数量的字段。这样你仍然可以使用 Django 的验证(非常方便)。

    如果您发布您正在处理的示例表单,我将能够起草一个表单集示例。

    更新:啊,那么您需要调查功能吗?这是一个完全不同的野兽。然后我无法想象有理由不利用existing solutions 之一。 ed-questionnaire 包似乎是最有特色和最成熟的一个。与 Django 一样,您可以相对轻松地对其进行自定义。

    如果我还没有说服你,请看一下它的models.py 文件。你真的有时间和意愿重新实现所有这些东西吗?

    【讨论】:

    • 嗨,Alex,我在问题中添加了更多描述。
    • 非常感谢您的帮助。但我想要完成的是在不指定任何表单的情况下利用 Django 对单个输入字段的验证。我不需要现有的调查包。我只想知道如果提交了一个字符串,如何验证它? Django 已经做到了。一定有一些包可以让你这样做。
    • Django 的验证是通过表单完成的。实际上,表单 用于验证。例如,他们只需为每个字段获取验证器、运行它并设置错误,以便您可以在 HTML 中处理它。 Django 中没有其他“验证框架”或其他东西。如果要清理数据,只需使用表单。您似乎遇到的问题是为任意数量的字段构建动态表单。这显然是一个可行的任务,例如见jacobian.org/writing/dynamic-form-generation
    • 您提供的链接绝对有帮助。我将看到如何根据该信息进行操作。谢谢!
    猜你喜欢
    • 2020-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-24
    • 1970-01-01
    • 2019-07-08
    • 2019-03-13
    • 2015-01-15
    相关资源
    最近更新 更多