Все доброго времени суток.
Заранее извиняюсь за пафосный заголовок и, возможно, ламерский вопрос.
Проблема связана с обработкой форм при использовании Django.
Как быть, когда нужно, например: обрабатывать форму входа на сайт, если форма находится в модальном окне и появляется в результате нажатия на некоторую кнопку (скажем, в хедере сайта), а хедер наследуется всеми страницами.
Для одной страницы все просто: создаем экземпляр класса Form, описываем необходимые нам поля, виджеты; во вьюху, рендерящую главную страницу добавляем контекст для рендеринга нашей формы входа а также код валидации этой формы и выборки данных из нее.
def index(request):
if request.method == "POST":
form = LoginForm(request.POST)
if form.is_valid():
username = form.cleaned_data['username']
password = form.cleaned_data['password']
user = authenticate(username=username, password=password)
if user is not None:
if user.is_active:
login(request, user)
else:
return HttpResponse(u"Ошибка авторизации!")
else:
form = LoginForm()
return render(request, "pages/index.djhtml", {"form": form})
Но ведь нам нужно, чтобы форма рендерилась и обрабатывалась не только на главной, а на любой странице сайта. Добавлять код обработки формы во все вьюхи - бред. Использовать шаблонные теги - не вариант. А если есть есть несколько форма (форма входа и форма регистрации нового пользователя). И их нужно показывать и обрабатывать на всех страницах.
Может вообще забить на django'вский механизм обработки форм и просто обрабатывать данные из POST? Но чувствую, что не тру это.
Кто что подскажет?