Как не вписывать форму в каждый шаблон html и унаследовать ее с помощью extends? Django
Как мне сделать так чтоб на каждой странице была эта форма, но при этом не вписывать в каждый view одно и то же? Чтобы сделать эту форму на 4 шаблона я вставил в каждый view одинаковый код. Как этого можно избежать?
Forms.py
class FeedbackForm(ModelForm):
class Meta:
model = Feedback
fields = ['feedback_name', 'feedback_email', 'feedback_text']
widgets = {
"feedback_name": TextInput(attrs={'class': 'form-control', 'placeholder':'Имя'}),
"feedback_email": TextInput(attrs={'class': 'form-control', 'placeholder': 'Ваша почта'}),
"feedback_text": Textarea(attrs={'class': 'form-control', 'placeholder':'Сообщение'}),
}
html
<form method="post">
{% csrf_token %}
{{ form.feedback_name }}<br>
{{ form.feedback_email }}<br>
{{ form.feedback_text }}<br>
<button class="btn btn-success" type="submit">Отправить</button>
</form>
views.py
def creators(request):
games = Games.objects.all()
if request.method == 'POST':
form = FeedbackForm(request.POST)
if form.is_valid():
form.save()
form = FeedbackForm()
data = {
"games": games,
"form": form,
}
return render(request, 'creators.html',data)
Попробуй вынести логику функции creators в отдельную функцию(типа get_feedback_form). Далее импортируй эту функцию в свои 4 views, а затем используй, вызывая get_feedback_form с аргументами. Дальше тебе остается только отрендерить шаблон