Пример формы электронной почты Python Django

Я хотел сделать контактную форму на моем сайте. Я могу найти формы электронной почты PHP везде, но примеров Django нет. Я понятия не имею, как это сделать сам, поэтому я спрашиваю, есть ли кто-нибудь, кто мог бы сказать мне с нуля - как сделать контактную форму электронной почты на веб-сайте, используя Django?

11 голосов | спросил Nhor 9 FebruaryEurope/MoscowbMon, 09 Feb 2015 03:09:38 +0300000000amMon, 09 Feb 2015 03:09:38 +030015 2015, 03:09:38

3 ответа


0

Простым примером может быть:

urls.py

from django.conf.urls import patterns, url
from yourapp import views

urlpatterns = patterns(
    '',
    url(r'^email/$',
        views.email,
        name='email'
        ),
    url(r'^thanks/$',
        views.thanks,
        name='thanks'
        ),
)

forms.py

from django import forms

class ContactForm(forms.Form):

    from_email = forms.EmailField(required=True)
    subject = forms.CharField(required=True)
    message = forms.CharField(widget=forms.Textarea)

views.py

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

def email(request):
    if request.method == 'GET':
        form = ContactForm()
    else:
        form = ContactForm(request.POST)
        if form.is_valid():
            subject = form.cleaned_data['subject']
            from_email = form.cleaned_data['from_email']
            message = form.cleaned_data['message']
            try:
                send_mail(subject, message, from_email, ['[email protected]'])
            except BadHeaderError:
                return HttpResponse('Invalid header found.')
            return redirect('thanks')
    return render(request, "yourapp/email.html", {'form': form})

def thanks(request):
    return HttpResponse('Thank you for your message.')

email.html

<form method="post">
    {% csrf_token %}
    {{ form }}
    <div class="form-actions">
      <button type="submit">Send</button>
    </div>
</form>
ответил iago1460 10 FebruaryEurope/MoscowbTue, 10 Feb 2015 00:08:59 +0300000000amTue, 10 Feb 2015 00:08:59 +030015 2015, 00:08:59
0

Если важна простота, альтернативой может быть Formspree . Они делают это очень легко.

Вам просто нужно вставить что-то подобное в ваш код:

<form action="https://formspree.io/[email protected]"
      method="POST">
    <input type="text" name="name">
    <input type="email" name="_replyto">
    <textarea name="message"></textarea>
    <input type="submit" value="Send">
</form>

Затем вы подтверждаете адрес электронной почты и готовы к работе.

Для получения дополнительной информации это видео объясняет, как это сделать.

ответил J0ANMM 8 FebruaryEurope/MoscowbWed, 08 Feb 2017 17:59:50 +0300000000pmWed, 08 Feb 2017 17:59:50 +030017 2017, 17:59:50
0
  1. Из шаблонов импорта django.conf.urls, URL
  2. Из представлений импорта yourapp

Пример

urlpatterns = patterns(
    '',
    url(r'^email/$',
        views.email,
        name='email'
        ),
    url(r'^thanks/$',
        views.thanks,
        name='thanks'
        ),
)
ответил Avinash Kumar 20 22018vEurope/Moscow11bEurope/MoscowTue, 20 Nov 2018 13:38:46 +0300 2018, 13:38:46

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132