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'
にはどうすれば初期値を渡すことができますか?私が試した様々なことがリクエストに干渉するようです.POSTパラメータ。
エラーが原因のdictの代わりにUnicodeオブジェクトを渡すことにあります。 (dictは 'get()'を定義しますが、string/unicodeは定義しません)。 – spookylukey
ああ、優れた点。私はエラーを見たが、接続をしなかった! – cethegeek
詳細なコメントとソリューションをありがとう。結果URLが/ search/queryのように見えたかったので、私はこの方法で実装しました(私はそこに問題があると知っていますし、よく改訂するかもしれません)。私はPOSTの後にリダイレクトするので、Backボタンを押しても問題はありません。 – AP257