web-dev-qa-db-ja.com

Python Django電子メールフォームの例

ウェブサイトに連絡フォームを作りたかったのです。 PHP電子メールフォームはどこにでもありますが、Djangoの例はありません。自分でそれを行う方法がわからないので、質問しています。ゼロから教えてくれる人がいたら-Djangoを使用してウェブサイトで電子メールの連絡フォームを作成する方法は?

13
Nhor

簡単な例は次のとおりです。

rls.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>
32
iago1460

単純さが重要な場合は、 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>

次に、電子メールを検証すると、準備が整います。

詳細については、 このビデオ でその方法を説明しています。

1
J0ANMM
  1. Django.conf.urlsからインポートパターン、URL
  2. Yourappインポートビューから

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