Django的新手問題....傳遞一個初始值到Django的表單字段
我想寫一個搜索表單和維護搜索請求和搜索結果之間的輸入框的狀態。
這裏是我的形式:
class SearchForm(forms.Form):
q = forms.CharField(label='Search: ', max_length=50)
這是我的看法代碼:
def search(request, q=""):
if (q != ""):
q = q.strip()
form = SearchForm(initial=q)
#get results here...
return render_to_response('things/search_results.html',
{'things': things, 'form': form, 'query': q})
elif (request.method == 'POST'): # If the form has been submitted
form = SearchForm(request.POST)
if form.is_valid():
q = form.cleaned_data['q']
# Process the data in form.cleaned_data
return HttpResponseRedirect('/things/search/%s/' % q) # Redirect after POST
else:
form = SearchForm()
return render_to_response('things/search.html', {
'form': form,
})
else:
form = SearchForm()
return render_to_response('things/search.html', {
'form': form,
})
但是,這給我的錯誤:
Caught an exception while rendering: 'unicode' object has no attribute 'get'
如何傳遞的初始值?我嘗試過的各種東西似乎都會干擾request.POST參數。
的錯誤是由於經過一個Unicode對象,而不是一個字典的。 (dict定義'get()',但string/unicode不)。 – spookylukey 2009-12-10 18:01:27
啊,優點。我看到錯誤,但沒有建立連接! – cethegeek 2009-12-10 18:03:02
感謝您的詳細評論和解決方案。我以這種方式實現了它,因爲我希望結果URL看起來像/ search/query(但我知道這存在問題,並且可能會修改它)。我在POST後重定向,因此按Back按鈕沒有問題。 – AP257 2009-12-10 18:21:59