Получение данных из формы с GET-данными.Джанго - PullRequest
0 голосов
/ 29 мая 2019

Как я могу получить данные из формы, используя метод 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 ]

2 голосов
/ 29 мая 2019

Рекомендуется: запустите 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(), и вы нигде его не вызывали.

больше об очищенных данных - документация

2 голосов
/ 29 мая 2019
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

Вы можете прочитать больше о соответствующей документации .

0 голосов
/ 17 июля 2019

Я использовал name = form.data ['field_name'], думаю, он отвечает на ваш ответ о получении значений формы при отправке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...