我正在使用Django的Form類構建一個帶有窗體的網頁。我已經包含了一些示例代碼片段,但是我的問題是,我遵循Django文檔和Djangobook中的教程,但無法讓我的表單實際顯示在頁面上。Django窗體不出現
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>
...
只有按鈕將出現在該網頁,而不是標籤ChoiceField
應呈現。
編輯:
我編輯我views.py
這樣:
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})
編輯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
感謝您的回覆。我改變了我的代碼,像你所描述的那樣閱讀'POST'。表單標籤的屬性仍然是'GET'。然後,我重新啓動了我的Apache並刷新了頁面,但仍然沒有顯示任何表單。還有其他建議嗎? – noblerare
表單也應該是POST類型的。 – mariodev
是的,我也嘗試過,但那也不起作用。有沒有辦法使用Django表單進行GET請求?由於這是一個POST請求,我添加了'{%csrf_token%}'這對我來說很好。我可以點擊提交按鈕並獲得適當的頁面......事實上,表單本身甚至沒有出現,這是什麼讓我感到困擾。 – noblerare