Django表单不显示 [英] Django form does not appear
问题描述
我正在使用Django的Form类构建一个带有表单的网页。我已经包含了一些示例代码片段,但是我的问题是,我遵循Django文档和Djangobook中的教程,但无法让我的表单实际显示在页面上。
forms.py
from django导入表格
类ResearchForm(forms.Form):
fam_choices = ...
spec_choices = ...
family = forms.ChoiceField(choices = fam_choices ,required = True)
species = forms.ChoiceField(options = spec_choices,required = True)
views.py
from django.http import HttpResponse,HttpResponseRedirect,Http404
来自django.shortcuts import mysite.forms中的
导入ResearchForm
def research(请求):
if request.method = ='GET':
form = ResearchForm(request.GET)
if form.is_valid():
f = form.cleaned_data ['family']
s = form.cleaned_data [ 'species']
return render(request,'thankyou.html',{})
else:
form = ResearchForm()#一个未绑定的表单
返回render(request,research.html,{'form':form})
research.html
...
{{form.as_p}}
<按钮>提交< /按钮>
< / form>
...
只有按钮出现在网页上,而不是选择
标签, ChoiceField
应该呈现。
编辑: 我编辑了我的视图。
def research(request):
form = ResearchForm(request .GET)
if form.is_valid():
return render(request,'thankyou.html',{})
else:
form = ResearchForm()
return return(request,'research.html',{'form':form})
编辑2:
urls.py
<$ p $ (r'^ admin /',include(admin.site.urls)),
url(r'^'),包括 urlpatterns = patterns('',
('cms.urls')),
)
如果settings.DEBUG:
urlpatterns = patterns('',
(r'^'+ settings。 MEDIA_URL.lstrip('/'),include('appmedia.urls')),
)+ urlpatterns
当你第一次渲染页面时,第一个条件是称为:
if request.method =='GET':
并且因为表单无效,所以它永远不会传递到任何地方,所以表单
变量是空的。
在两个地方都应该有 POST
而不是 GET
。
if request.method =='POST':
form = ResearchForm(request.POST)
I'm working with building a webpage with a form using Django's Form class. I've included some sample code snippets but my problem is that I've followed the Django docs and the tutorial in Djangobook but can't get my Form to actually display on the page.
forms.py
from django import forms
class ResearchForm(forms.Form):
fam_choices = ...
spec_choices = ...
family = forms.ChoiceField(choices=fam_choices, required=True)
species = forms.ChoiceField(choices=spec_choices, required=True)
views.py
from django.http import HttpResponse, HttpResponseRedirect, Http404
from django.shortcuts import render
from mysite.forms import ResearchForm
...
def research(request):
if request.method == 'GET':
form = ResearchForm(request.GET)
if form.is_valid():
f = form.cleaned_data['family']
s = form.cleaned_data['species']
return render(request, 'thankyou.html', {})
else:
form = ResearchForm() # an unbound form
return render(request, "research.html", {'form':form})
research.html
...
<form action="/research/" method="get" name="researchform">
{{ form.as_p}}
<button>Submit</button>
</form>
...
Only the button appears on the webpage, not the select
tags that ChoiceField
should render.
EDIT:
I edited my views.py
to this:
def research(request):
form = ResearchForm(request.GET)
if form.is_valid():
return render(request, 'thankyou.html', {})
else:
form = ResearchForm()
return render(request, 'research.html', {'form':form})
EDIT 2:
urls.py
urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls)),
url(r'^', include('cms.urls')),
)
if settings.DEBUG:
urlpatterns = patterns('',
(r'^' + settings.MEDIA_URL.lstrip('/'), include('appmedia.urls')),
) + urlpatterns
When you first render the page the first condition will be called:
if request.method == 'GET':
and because form is not valid, it never gets passed anywhere, so the form
variable is empty.
Instead of GET
there should be POST
in both places.
if request.method == 'POST':
form = ResearchForm(request.POST)
这篇关于Django表单不显示的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!