Размещение одной фрмы Django на всех страницах сайта
Друзья, здравствуйте. Я создал форму подписки. Пока я ее реализовал просто как html-форму. Она сидит у меня в отдельном шаблоне, который инклюдится во все остальные шаблоны сайта. Но я никак не могу понять, как мне ее совместить с Django Forms? Ведь тогда я должен буду прописать конкретный URL и, соответственно только на эту страницу она и будет рендериться. Вот я в тупике и не знаю, что делать... Надеюсь на вашу помощь. Возможно есть вариант и не использовать Django Forms, но тогда я не понимаю, какую логику прописать во вьюхе.
Форма в шаблоне
<form id="subscribe_form" class="needs-validation container" novalidate>
{% csrf_token %}
<input type="text" id="subscribe_page" class="form-control" value="{{ title }}" hidden required/>
<div class="modal-body">
<div class="md-form mb-5">
<i class="fas fa-user prefix grey-text"></i>
<input type="text" id="subscribe_name" class="form-control" value="" required/>
<label for="subscribe_name">Ваше имя</label>
<div class="invalid-feedback">Это поле не должно быть пустым.</div>
</div>
<div class="md-form">
<i class="fas fa-envelope prefix grey-text"></i>
<input class="form-control" type="email" value="" id="subscribe_email" required>
<label class="form-check-label" for="subscribe_email">Ваш e-mail</label>
<div class="invalid-feedback">Введите правильный e-mail</div>
</div>
</div>
<div class="modal-footer justify-content-center">
<button class="btn btn-outline-blue-grey waves-effect">Записаться <i
class="fas fa-paper-plane-o ml-1"></i></button>
</div>
</form>
Примерный код во view.py
def subscribe(request):
if request.method == 'POST':
name = request.POST['name']
email = request.POST['email']
page = request.POST['page']
mail = send_mail('Subject', 'Content', '[email protected]', ['[email protected]'], fail_silently=True)
if mail:
messages.success(request, 'Письмо отправлено!')
return HttpResponse(messages)
else:
messages.error(request, 'Ошибка отправки')
return HttpResponse('Ok')
return HttpResponse('Ok')
Ответы (1 шт):
вам нужно указать action в параметрах формы, куда нужно указать урл, на который будет отправлена форма. таким образом, где бы форма не была отрендерена, она будет слать запрос на укзаанный урл в action. а джанго форма это класс описывающий правила для полей и валидацию. соответственно создание класса формы описано в документации. потом при получении запроса создается инстанс формы которой передается запрос. профит.