[英]Obtaining data from the form with GET data. Django
如何使用GET方法從表單獲取數據?
例如,我有這種形式:
class LoansSearchForm(forms.Form):
balance = forms.IntegerField(label='', required=False)
在我的視圖中,以這種方式在表單模板中顯示:
def search_results(request):
form = LoansSearchForm(request.GET)
cd = form.cleaned_data
word = cd['balance']
context = {'form': form,
'test': word,}
return render(request, 'search_results.html', context)
但我仍然是一個錯誤:
'LoansSearchForm' object has no attribute 'cleaned_data'
嘗試以這種方式獲取它們時:
word = form['balance']
我收到一個包含完整數據的字段。 如何正確地從表單中獲取數據?
我的表格書寫正確嗎? 我應該使用類似的東西嗎? (很抱歉,如果我的問題很瑣碎,但是我發現有關GET表單的信息很少)
if request.method == 'GET':
form = LoansSearchForm(request.GET)
if form.is_valid():
print('Hello World')
else:
form = LoansSearchForm()
def search_results(request):
form = LoansSearchForm(request.GET)
cd = form.cleaned_data # here <------
word = cd['balance']
context = {'form': form,
'test': word,}
return render(request, 'search_results.html', context)
您的代碼的問題在於,表單不會在初始化時填充,而是在您調用form.is_valid
,如果表單確實有效,則填充cleaned_data
您可以閱讀有關相關文檔的更多信息。
推薦:運行form.is_valid()
,然后執行form.cleaned_data
def search_results(request):
form = LoansSearchForm(request.GET)
if form.is_valid():
cd = form.cleaned_data
word = cd['balance']
else:
word = None
context = {'form': form,
'test': word,}
return render(request, 'search_results.html', context)
僅當
is_valid()
且您未在任何地方調用它時,表單才獲得cleaned_data
屬性。
有關清理數據的更多信息- 文檔
我使用了name = form.data ['field_name'],認為它回答了您在提交時獲取表單值的答案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.