以下是在 Django 框架中编写 Contact 表单的教程。本攻略将分为以下几个部分:
- 创建 Django 项目和应用
- 设置模型
- 创建视图函数
- 编写表单类
- 渲染表单
- 发送电子邮件
1. 创建 Django 项目和应用
首先,你需要创建一个新的 Django 项目和应用,在命令行中输入以下命令:
django-admin startproject myproject
cd myproject
python manage.py startapp contact
这将创建一个名为 "myproject" 的 Django 项目和一个名为 "contact" 的 Django 应用.
2. 设置模型
在联系表单中,你需要定义一个模型来描述提交表单时应收集的信息。在应用程序的 models.py 文件中,添加以下代码:
from django.db import models
class Contact(models.Model):
name = models.CharField(max_length=100)
email = models.EmailField(max_length=100)
message = models.TextField()
def __str__(self):
return self.name
这个模型有三个属性: name (字符串), email (电子邮件地址), 和 message (文本).
3. 创建视图函数
下一步是创建一个视图函数来处理表单请求. 在应用程序的 views.py 文件中,添加以下代码:
from django.shortcuts import render
from django.core.mail import send_mail
from django.conf import settings
from .forms import ContactForm
def contact(request):
if request.method == 'POST':
form = ContactForm(request.POST)
if form.is_valid():
name = form.cleaned_data['name']
email = form.cleaned_data['email']
message = form.cleaned_data['message']
# 发送电子邮件
send_mail(
f'{name} contacted you',
f'{message}',
settings.DEFAULT_FROM_EMAIL,
[settings.DEFAULT_FROM_EMAIL],
reply_to=[email],
)
return render(request, 'success.html', {'name': name})
else:
form = ContactForm()
return render(request, 'contact.html', {'form': form})
这个视图函数处理 POST 请求并在表单验证成功后发送电子邮件.
4. 编写表单类
现在你需要编写表单类,它将用于验证表单提交并缓存表单数据. 在应用程序的 forms.py 文件中,添加以下代码:
from django import forms
from .models import Contact
class ContactForm(forms.ModelForm):
class Meta:
model = Contact
fields = ('name', 'email', 'message')
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['name'].widget.attrs.update({'class': 'form-control', 'placeholder': 'Name'})
self.fields['email'].widget.attrs.update({'class': 'form-control', 'placeholder': 'Email'})
self.fields['message'].widget.attrs.update({'class': 'form-control', 'placeholder': 'Message'})
在这个表单类中,我们使用了 Django 中的 ModelForm,所以在 Meta 类中定义了 Contact 模型. 该表单类还包括一些小部件和属性的附加内容,这样它就更适用于前端.
5. 渲染表单
现在你需要在 contact.html 模板中渲染表单. 添加以下内容到 contact.html 模板文件中:
{% extends "base.html" %}
{% block content %}
<h1>Contact Us</h1>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit" class="btn btn-primary">Submit</button>
</form>
{% endblock %}
这个模板使用元素渲染表单和提交按钮,还包括 CSRF 令牌以保护我们的网站免受跨站点请求攻击(CSRF).
6. 发送电子邮件
最后一步是配置 Django 以发送电子邮件. 在 settings.py 文件中添加以下内容:
# 发送电子邮件配置
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_HOST_USER = 'your_email@gmail.com'
EMAIL_HOST_PASSWORD = 'your_email_password'
DEFAULT_FROM_EMAIL = 'your_email@gmail.com'
现在你已经完成了编写 Contact 表单的所有步骤!你可以尝试提交一个表单,然后检查邮箱是否收到了发送的电子邮件.
为了演示效果,以下是两个测试输入:
输入 1:
- name: "John Doe"
- email: "johndoe@gmail.com"
- message: "This is a test message #1."
输入 2:
- name: "Jane Doe"
- email: "janedoe@gmail.com"
- message: "This is a test message #2."
以上就是在 Django 框架中编写 Contact 表单的完整操作过程,希望能对你有所帮助!
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:在Django框架中编写Contact表单的教程 - Python技术站