2
我有一個Model類。form.is_valid()返回false
class Search(forms.Form):
query=forms.CharField()
而且,一個視圖函數。
def search(request):
c = {}
c.update(csrf(request))
if request.method == 'POST':
form = Search(request.POST)
if form.is_valid():
search_query=form.cleaned_data['query']
return HttpResponse("your query: %s" %search_query , c)
else:
return HttpResponse(form , c)
else:
return render_to_response('polls/search.html', c)
而且,這裏是我的search.html:
<form action="/polls/search" method="post">{% csrf_token %}
<p><label for="query_label">query:</label>
<input type="text" name="query_txt" id="query_txt_id" /></p>
<input type="submit" value="Submit" />
</form>
給予一定的字符輸入後,它總是告訴我下面的純文本(不視爲錯誤)。
「發生服務器錯誤,請與管理員聯繫。」
非常感謝。但是,如果我只在模板字段中編寫它,它只會產生一個按鈕。沒有文本框。 <形式行動= 「/輪詢/搜索」 的方法= 「POST」> {%csrf_token%} {{form.as_p}} – user1802771
阿,您需要將表單添加到您的模板上下文中。在else分支(對於get請求),用'form = Search()'創建一個未綁定的表單,然後用'c.update(form = form)'將其添加到模板上下文中。 – Alasdair