簡體   English   中英

使用GET數據從表單中獲取數據。 Django的

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM