我可以在不使用Django表单的情况下构建表单吗?

时间:2016-12-15 15:22:48

标签: python django html5 forms twitter-bootstrap

我正在使用Django,我只是做了一个大表格使用HTML5和bootstrap。如果我不使用它来生成表单,我还可以通过post方法将表单发送到django吗?我应该使用Django重做我的表单吗?

1 个答案:

答案 0 :(得分:2)

注意:可能有更好的方法可以做到这一点,如果我真的想知道,这就是我过去做过的事情。

您的应用仍然需要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_fieldName,其中fieldName是您在forms.py文件中定义的字段名称。

现在,当用户点击您的“提交”按钮时(我假设是一个引导按钮,给出了表单的其余部分)。您可以使用Jquery将引导字段值输入到隐藏表单的值中。

类似的东西:

$("#mySubmitButton").click(function() {

        $("#id_djangoFormField").val($("#myBootstrapFormField").val());
        $("#myForm").submit();

    }
);

这将使用bootstrap的输入提交django表单。这可以使用cleaned_data["fieldName"]在视图中正常处理。