Функция представления new_topic()

We use cookies. Read the Privacy and Cookie Policy

Функция 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.