Если эти переменные предназначены для заполнения формы, то вы можете безопасно передать объект request.POST
непосредственно в конструктор формы.
if request.method == 'POST':
form = MyForm(request.POST)
Форма будет автоматически передавать правильные значения в правильные поля формы и использовать значения по умолчанию для ключей, которых не существует , и все равно будет создавать пустые поля для отсутствующих ключей (см. Приложение).
Если вы пытаетесь обработать форму, все же лучше создать объект формы, как указано выше, и считать значения из этого объекта.
if request.method == 'POST':
form = MyForm(request.POST)
if form.is_valid():
# You may process these variables here
print form.appVersion
print form.appName
print form.appCodeName
Помните, что код валидации лучше всего размещать и в классе формы. Таким образом, если form.is_valid()
вернет True
, то вы знаете, что у вас есть чистый набор данных для работы.
Примечание: Django docs рекомендует использовать request.POST
или request.GET
напрямую, а не объединенную переменную request.REQUEST
, поскольку она более явная.
Добавление:
Важно понимать разницу между связанными и несвязанными формами в этом случае. Если вы создаете несвязанную форму с form = MyForm()
, то при создании экземпляра формы все поля будут заполнены свойством initial
каждого поля (если оно существует). Например, с этим кодом:
from django import forms
class MyForm(forms.Form):
appVersion = forms.CharField(initial='1.0')
appName = forms.CharField()
appCodeName = forms.CharField()
форма будет инициализирована с appVersion со значением '1.0'. Однако если вы связываете запрос POST с формой, подобной этой: form = MyForm(request.POST)
, то начальные свойства игнорируются. Это означает, что если в диктовке POST нет ключа appVersion, это поле останется пустым. Пока поле не является обязательным, ваша форма будет по-прежнему проверяться, и вы можете изменить form.appVersion
в представлении после проверки.