Django yeni soru için bir başlangıç değeri geçirin..... Django form alanına
İşte benim biçimi şöyledir:
class SearchForm(forms.Form):
q = forms.CharField(label='Search: ', max_length=50)
Ve burada görüşlerim kod:
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,
})
Ama bu bana hata veriyor: Ben başlangıç değeri geçebilir nasıl
Caught an exception while rendering: 'unicode' object has no attribute 'get'
? Denedim çeşitli şeyler request.POST parametresi ile müdahale görünüyor.
hata nedeniyle dict yerine unicode nesne geçirerek etmektir. (dict 'get()' öğesini tanımlar, ancak string/unicode içermez). – spookylukey
Ah, mükemmel nokta. Hatayı gördüm ama bağlantıyı yapmadım! – cethegeek
Detaylı yorumlar ve çözüm için teşekkürler. Bu şekilde uygulardım çünkü sonuç URL'lerinin/search/query gibi görünmesini istedim (bununla ilgili problemler olduğunu biliyorum ve iyi bir şekilde revize edebilirim). POST'tan sonra yönlendirme yapıyorum, bu yüzden Geri düğmesine basmakla ilgili bir sorun yok. – AP257