#django #view #django-forms #django-views
#django #Вид #django-forms #django-просмотры
Вопрос:
Могу ли я вернуть свою страницу с информацией, введенной ранее, когда форма недействительна?
Views.py
def MyView(request):
[...code...]
if request.method == 'POST':
form = MyForm(request.POST or None)
if form.is_valid()
//do something and redirect to success page
else:
//back to the page with the information filled in by the user (HERE IS MY PROBLEM)
Ответ №1:
строка form = MyForm(request.POST or None)
создает вызываемый MyForm
объект form
с присвоенными ему данными запроса — это похоже на заполненную форму. is_valid()
Метод проверяет наличие ошибок в вашей форме и добавляет конкретные ошибки в вашу form
, так что теперь это заполненная форма с присвоенными ошибками. Если вы хотите вернуть эту форму пользователю, вы должны добавить ее в контекст, поэтому, учитывая ее стандартное представление на основе функций django, оно должно выглядеть следующим образом:
def MyView(request):
[...code...]
if request.method == 'POST':
form = MyForm(request.POST or None)
if form.is_valid()
form.save()
return render(request, 'succes_page_template.html')
else:
return render(request, 'current_template.html', context = {'form': form})
если form
недопустимо, следующее, что видит пользователь, — это та же страница, на которой он заполнил форму (‘current_template.html ‘) но поскольку все поля заполнены данными, которые он / она уже ввел, также форма будет иметь ошибки, присвоенные определенным полям, чтобы вы могли их распечатать. Если вы новичок в Django, я предлагаю с самого начала перейти к представлениям на основе классов — они выполняют тяжелую работу за вас, и рефакторинг отладка становится намного проще. вот ссылка, приветствую!