Python Django 电子邮件表单示例 [关闭]
Posted
技术标签:
【中文标题】Python Django 电子邮件表单示例 [关闭]【英文标题】:Python Django e-mail form example [closed] 【发布时间】:2015-04-08 16:06:57 【问题描述】:我想在我的网站上制作一个联系表。我到处都可以找到 php 电子邮件表单,但没有 Django 示例。我自己不知道该怎么做,所以我问是否有人可以从头告诉我 - 如何使用 Django 在网站上制作电子邮件联系表?
【问题讨论】:
你可以使用这个github中的代码:https://github.com/jezdez/django-contact-form或者看看here一个简单的例子。 【参考方案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】:-
从 django.conf.urls 导入模式,url
从您的应用导入视图
示例
urlpatterns = patterns(
'',
url(r'^email/$',
views.email,
name='email'
),
url(r'^thanks/$',
views.thanks,
name='thanks'
),
)
【讨论】:
以上是关于Python Django 电子邮件表单示例 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
将Django Choices表单字段的详细名称传递给查看上下文