我可以在不使用 Django 表单的情况下构建我的表单吗?
Posted
技术标签:
【中文标题】我可以在不使用 Django 表单的情况下构建我的表单吗?【英文标题】:Can I build my form without using Django form? 【发布时间】:2017-05-01 06:19:21 【问题描述】:我正在使用 Django,我刚刚使用 html5 和引导程序做了一个大表单。如果我不使用它来生成表单,我仍然可以通过 post 方法将表单发送到 django 吗?我一定要使用 Django 重做我的表单吗?
【问题讨论】:
是的,你可以这样做。以我的经验,主要区别在于,如果你使用 Django 表单,你可以使用很多内置的 Django 表单验证工具,但要让它们看起来更漂亮,需要付出更多的努力。 我想,是的。在form
标签中使用action
url,并为这个url 创建视图
如果您对标准 Django 表单在呈现时的外观不满意(看起来不太好),可以使用一个名为 django-crispy-forms 的包来使它们看起来好多了。
当您尝试提交表单时,您在request.POST
中发现了什么?
【参考方案1】:
注意:可能有更好的方法可以做到这一点,如果我真的很想知道,这就是我过去的做法。
您的应用中仍需要一个forms.py
文件。
在forms.py
:
from django import forms
class MyForm(forms.Form):
# FORM FIELDS HERE
然后将表单放入您的视图的上下文字典中:
def myView(request):
if request.method == "POST":
# FORM PROCESSING HERE
else:
myform = MyForm() #create empty form
return render(request, "template.html", "myform": myForm
现在您可以在模板中添加:
<form id="myForm" name="myFormName" method="post" action=".">
% csrf_token %
% for field in myform %
field.as_hidden
% endfor %
</form>
这会将您的 django 表单添加到页面而不显示它。您的所有表单输入的 ID 为 id_fieldName
,其中 fieldName
是您在 forms.py
文件中定义的字段名称。
现在,当用户单击您的“提交”按钮时(我假设这是一个引导按钮,因为您的表单的其余部分是)。您可以使用 Jquery 将引导字段值输入到隐藏表单中。
类似:
$("#mySubmitButton").click(function()
$("#id_djangoFormField").val($("#myBootstrapFormField").val());
$("#myForm").submit();
);
这将提交带有来自引导程序的输入的 django 表单。这可以使用cleaned_data["fieldName"]
在视图中正常处理。
【讨论】:
以上是关于我可以在不使用 Django 表单的情况下构建我的表单吗?的主要内容,如果未能解决你的问题,请参考以下文章
我可以在不创建表单的情况下创建 Django 中不需要的管理字段吗?
如何在不刷新页面的情况下使用 django-crispy-forms 实现引导模式表单