我可以在不使用 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 中不需要的管理字段吗?

如何在不刷新页面的情况下使用 django-crispy-forms 实现引导模式表单

是否可以在不修改 Form 类的情况下使用 django-crispy-form FormHelper

Django 在不知道文件名的情况下显示带注释的查询集的值

Django - 如何在不刷新页面的情况下保持在同一页面上?