FormView - 指定在 POST 中发送哪些字段
Posted
技术标签:
【中文标题】FormView - 指定在 POST 中发送哪些字段【英文标题】:FormView - Specify which fields are sent in the POST 【发布时间】:2016-12-09 07:41:23 【问题描述】:给定一个与表单关联的 FormView,一旦提交表单,一些字段将发送到 FormView(用户已填写的字段)。
问题:如何将其他字段发送到 FormView,即使用户没有填写它们(因为这些字段已经预先填充)?我需要比用户提供更多的数据才能在 form_valid
中使用【问题讨论】:
send[ing fields] 到 FormView 是什么意思?如果我理解您想要正确执行的操作,您可以使用FormView
类的 get_initial
(docs.djangoproject.com/en/1.9/ref/class-based-views/…) 函数来预填充您的表单。如果您不希望向用户显示这些字段,请将它们隐藏在您的 Form
定义中。这是示例用法:***.com/questions/22083218/…
@Siegmeyer 我的意思是...我有一个预填充的表单,用户填写他们想要的字段并将数据发送到 FormView。除此之外,我希望表单的特定字段始终与其余数据一起发送,无论用户是否填写了此特定字段(具有预填充步骤的默认值)
Form
定义中的所有字段默认发送到request.POST
,无论它们是隐藏的、预填充的、由用户填充的还是保持不变。表单验证后,您都可以使用form.cleaned_data
访问它们。
【参考方案1】:
如果数据不敏感,您可能希望将它们作为隐藏字段添加到表单中。在 django 中,您可以使用 FormWidget 来实现这一点。这里有一些关于 SO 的相关问题:
Change a django form field to a hidden field Django ModelForm to have a hidden input请注意,这只是将您的数据隐藏在用户界面中,而不是浏览器中 - 如果您遇到麻烦,如果有人会以恶意更改此数据,您可以考虑将数据写入 session。
【讨论】:
以上是关于FormView - 指定在 POST 中发送哪些字段的主要内容,如果未能解决你的问题,请参考以下文章
django - 使用 FormView 和 ModelForm 更新模型
使用 FormView django 在 form_valid 中渲染模板而不是 success_url