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

带有内联表单集的 Django 表单验证

如果空值传递给Django中的表单字段,如何验证表单?

在一个 django 表单元素上覆盖数据验证

如何在客户端应用程序中使用 Django 模型进行验证和表单生成?

Django 表单字段验证 - 如何判断操作是插入还是更新?