Использование форм Django
Вы должны использовать обработку форм Django с POST
, что упростит задачу.Здесь идет речь:
if request.method == 'GET':
form = MyFormClass()
else:
form = MyFormClass(request.POST)
if form.is_valid():
do_something_with(form.cleaned_data['params'])
return redirect('somewhere')
return render_to_response('my_template.html', RequestContext(request, {'form':form}))
Замечания по использованию GET
против POST
с формами
Бесполезно включать {% csrf_token %}
, если вы собираетесь GET
форму (Абсолютнопроверка * csrf не выполняется с GET
запросами, что имеет смысл, так как GET
запросы, как предполагается, не изменяют данные.
В любом случае, если вы действительно собираетесь GET
страницувы все равно можете использовать ту же логику, что и ранее, с небольшой настройкой:
form = MyFormClass(request.GET)
if form.is_valid():
do_something_with(form.cleaned_data['params'])
return render_to_response('some_template.html', {'stuff':some_stuff})
return render_to_response('form_submission_page.html', {'form':form})
Последнее, использование GET
для отправки данных, как правило, плохая практика, если вы не создаете какую-либо функцию поиска илиизменение отображения (нумерация страниц и все).
Использование request.GET
Теперь, если по какой-то причине вы не хотите использовать формы Django , вы все равно можете получитьОбойти проблему и получить ваш params
, вам просто нужно использовать QueryDict.getlist
вместо использования QueryDict.get
метода.
Вот так:
my_data = request.GET.getlist('params')
Документация
Не забудьте ознакомиться с документацией Django по QueryDicts
и forms