Функция представления new_topic()
Функция new_topic() должна обрабатывать две разные ситуации: исходные запросы страницы new_topic (в этом случае должна отображаться пустая форма) и обработка данных, отправленных через форму. Затем она должна перенаправить пользователя обратно на страницу topics:
views.py
from django.shortcuts import render
from django.http import HttpResponseRedirect
from django.core.urlresolvers import reverse
from .models import Topic
from .forms import TopicForm
...
def new_topic(request):
. ."""Определяет новую тему."""
(1) . .if request.method != 'POST':
. . . .# Данные не отправлялись; создается пустая форма.
(2) . . . .form = TopicForm()
. .else:
. . . .# Отправлены данные POST; обработать данные.
(3) . . . .form = TopicForm(request.POST)
(4) . . . .if form.is_valid():
(5) . . . . . .form.save()
? . . . . . .return HttpResponseRedirect(reverse('learning_logs:topics'))
? . .context = {'form': form}
. .return render(request, 'learning_logs/new_topic.html', context)
Мы импортируем класс HttpResponseRedirect, который будет использоваться для перенаправления пользователя к странице topics после отправки введенной темы. Функция reverse() определяет URL по заданной схеме URL (то есть Django сгенерирует URL при запросе страницы). Также импортируется только что написанная форма TopicForm.