Django форма в расширенном шаблоне - PullRequest
0 голосов
/ 13 февраля 2020

Я очень новичок в Django, у меня есть домашний шаблон (home. html), который расширяет базовый шаблон (base. html) с помощью {% extends "base.html" %}.

base.html содержит контактную форму.

<form id="email-form" name="email-form" data-name="Email Form" method="post">
    {% csrf_token %}
    <div>
        <label for="Name-2" class="field-label">Full name</label>
        {% render_field form.name class+="text-field w-input" %}
    </div>
    <div>
        <label for="Email-2" class="field-label">Email address</label>
        {% render_field form.from_email class+="text-field _2 w-input" %}
    </div>
    <div>
        <label for="Phone-2" class="field-label">Phone number</label>
        {% render_field form.phone class+="text-field _2 w-input" %}
    </div>
    <div>
         <label for="Timeline" class="field-label">More information</label>
         <div>
             {% render_field form.message class+="text-field area w-input" %}
        </div>
    </div>
    <div class="algin-center form-actions">
        <input type="submit" value="Send Message" data-wait="Please wait..." class="button full w-button">
    </div>
</form>

views.py

from django.core.mail import send_mail, BadHeaderError
from django.http import HttpResponse, HttpResponseRedirect
from django.shortcuts import render, redirect
from django import forms

class ContactForm(forms.Form):
    name = forms.CharField(required=True)
    from_email = forms.EmailField(required=True)
    phone = forms.CharField(required=True)
    message = forms.CharField(widget=forms.Textarea, required=True)

def homeView(request):
    if request.method == 'GET':
        form = ContactForm()
    else:
        form = ContactForm(request.POST)
        if form.is_valid():
            name = form.cleaned_data['name']
            phone = form.cleaned_data['phone']
            from_email = form.cleaned_data['from_email']
            message = form.cleaned_data['message']
            try:
                send_mail(name, message, from_email, ['email@email.com'])
            except BadHeaderError:
                return HttpResponse('Invalid header found.')
            return redirect('success')
    return render(request, "home.html", {'form': form})

Форма отображается нормально, однако, когда я нажимаю кнопку отправки, ничего не происходит. Я предполагаю, что это потому, что форма находится не в homeView напрямую, а через расширение, но я понятия не имею, как это исправить, возможно ли иметь форму в расширенном представлении?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...