使用GET数据从表单中获取数据。 Django的

时间:2019-05-29 09:46:05

标签: python django forms

如何使用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()

3 个答案:

答案 0 :(得分:2)

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

您可以详细了解相关的documentation

答案 1 :(得分:2)

推荐:运行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)
  

仅在调用cleaned_data并且您没有在任何地方调用它时,表单才获得is_valid()属性。

有关清除的数据的更多信息-documentation

答案 2 :(得分:0)

我使用了name = form.data ['field_name'],认为它回答了您在提交时获取表单值的答案。