【问题标题】:Python Django e-mail form example [closed]Python Django 电子邮件表单示例 [关闭]
【发布时间】:2015-04-08 16:06:57
【问题描述】:

我想在我的网站上制作一个联系表。我到处都可以找到 PHP 电子邮件表单,但没有 Django 示例。我自己不知道该怎么做,所以我问是否有人可以从头告诉我 - 如何使用 Django 在网站上制作电子邮件联系表?

【问题讨论】:

标签: python html django forms email


【解决方案1】:

一个简单的例子可以是:

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, ['admin@example.com'])
            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>

【讨论】:

    【解决方案2】:

    如果简单很重要,Formspree 可能是一个替代方案。他们让一切变得超级简单。

    你只需要在你的代码中插入这样的东西:

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

    然后您验证电子邮件,就可以开始了。

    如需更多信息,this video 解释了如何操作。

    【讨论】:

      【解决方案3】:
      1. 从 django.conf.urls 导入模式,url
      2. 从您的应用导入视图

      示例

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

      【讨论】:

        猜你喜欢
        • 2017-09-29
        • 1970-01-01
        • 2015-06-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-28
        • 1970-01-01
        相关资源
        最近更新 更多