我已经从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
)
答案 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模板!