如何在HTML中显示forms.py文件

时间:2017-03-06 19:37:28

标签: python django

我已经从Django教程创建了forms.py文件,但它没有显示如何在HTML中显示它。我正在使用Django 1.9,非常感谢帮助。我正在尝试用4个选项创建一个问题。

由于

forms.py


Question_CHOICES = (
    ('1', '2', '3', '4',)
)
class QuestionForm(forms.Form):
    Q1 = forms.MultipleChoiceField(
         required=True, 
         widget=forms.CheckboxSelectMultiple, 
         choices=Question_CHOICES
    )

2 个答案:

答案 0 :(得分:0)

如果您使用FBV,则需要创建一个view_function并使用自定义表单初始化表单,并通过上下文将表单传递给您的模板。

1. view.py

    from .forms import QuestionForm

    def custom_view_function(request):
        if request.method == 'POST':
            form = QuestionForm(request.POST)
            if form.is_valid():
                return HttpResponseRedirect('---success url---')
        else:
            form = QuestionForm()

        return render(request, 'template.html', {'form': form})

2. template.html

    <form action="." method="post">
        {% csrf_token %}
        {{ form }}
        <input type="submit" value="Submit" />
    </form>

查看官方django文档以获取更多详细信息link

答案 1 :(得分:0)

views.py文件中写:

def vote_view(request):
    from .forms import QuestionForm
    question_form = QuestionForm()
    return render(request, 'path/to/your/template.html', locals())

然后在你的HTML写中:

<div>
    {{ question_form.as_p }}
    or
    {{ question_form.as_table }}
</div>

您可以使用不同的格式呈现表单。请参阅here

同样,locals()是一种方便的方法,可以将当前范围的所有局部变量(即vote_view视图函数)传递给HTML模板。

当然,请不要忘记将视图链接到您的基本urls.py文件,如下所示:

from your_app.views import vote_view

urlpatterns = [...]  # the previous urls (if any)
urlpatterns += [ url(r'^polls/$', vote_view, name='polls'), ]

[更新] :此类表单字段的Question_CHOICES格式错误。你应该这样定义它:

Question_CHOICES = (
    ('1', '1'),
    ('2', '2'),
    ('3', '3'),
    ('4', '4'),
)

然后将通过{{ question_form }}{{ question_form.as_p }}{{ question_form.as_table }}或其他方式呈现给您的HTML模板!