不使用 django 表单如何验证和保存表单数据
Posted
技术标签:
【中文标题】不使用 django 表单如何验证和保存表单数据【英文标题】:Without using django forms how to validate and save form data 【发布时间】:2021-06-05 15:41:32 【问题描述】:假设我有一个包含两个字段的“问题”模型 - 标题和内容
现在考虑问题创建形式。使用 django 表单,我可以将其显示为模板并使用 is_valid 方法进行验证。
但我不想使用 django 内置表单。我想用手写的 html 编写表单并使用 POST 方法将其发送到服务器。
在这种情况下,验证和保存到数据库将如何工作?
I am doing something similar to this guy 但我对现有答案不满意
【问题讨论】:
为什么要为自己做更多的工作?您仍然可以手动渲染字段。请参阅文档中的 Rendering fields manually 部分。您还可以通过更改表单中的字段定义向字段添加一些属性。如果您仍然不喜欢这样做,您可以随时使用这些出色的包来自定义字段的呈现 django-widget-tweaks 和 django-crispy-forms @Abdul Aziz Barkat 实际上我想使用降价编辑器而不是 django 表单文本区域来获取用户的输入。回答问题时有点像 *** 的编辑器。 Django默认是textarea,我的markdown编辑器是第三方JS包。 这只是意味着您需要一个自定义小部件。检查这个问题Django: How to build a custom form widget? 我建议创建表单,如果您不想,不要将其用于 html 演示文稿(尽管我可能会构建一个小部件),并利用表单验证和清理的好处. 【参考方案1】:在你看来:
import Model
Param = request.post.get('param')
Model.objects.create(field=param)
就这样,您已将其保存到模型中。
【讨论】:
这不是一个很好的方法。您正在失去对数据的清理和验证。 OP的问题主要是“在这种情况下验证和保存到数据库将如何工作?” 我看到了你的建议,他们很好。但他说他不想使用 django 表单。以上是关于不使用 django 表单如何验证和保存表单数据的主要内容,如果未能解决你的问题,请参考以下文章
使用Ajax验证并提交Django表单(django-crispy-forms)