在Django框架中编写Contact表单的教程

以下是在 Django 框架中编写 Contact 表单的教程。本攻略将分为以下几个部分:

  1. 创建 Django 项目和应用
  2. 设置模型
  3. 创建视图函数
  4. 编写表单类
  5. 渲染表单
  6. 发送电子邮件

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技术站

(0)
上一篇 2023年5月25日
下一篇 2023年5月25日

相关文章

  • 常用的Spring Boot调用外部接口方式实现数据交互

    Spring Boot是一款十分流行的Java框架,使用Spring Boot开发应用程序常遇到的问题之一就是需要调用外部接口实现数据交互。本篇文章将详细讲解常用的Spring Boot调用外部接口方式实现数据交互的完整攻略,主要包括以下几点。 1. 实现数据交互的方式 在前期规划时,我们需要明确如何实现数据交互。通常有以下几种方式。 RestTemplat…

    人工智能概览 2023年5月25日
    00
  • 在Mac OS下搭建LNMP开发环境的步骤详解

    在Mac OS下搭建LNMP开发环境的步骤详解 简介 LNMP(Linux + Nginx + MySQL + PHP)是一种网站开发和运行环境,与传统的LAMP(Linux + Apache + MySQL + PHP)相比,LNMP具有更高的性能和更低的资源消耗,是目前非常流行的web开发环境之一。本文将详细介绍如何在Mac OS上搭建LNMP开发环境。…

    人工智能概览 2023年5月25日
    00
  • Python应用自动化部署工具Fabric原理及使用解析

    Python应用自动化部署工具Fabric原理及使用解析 什么是Fabric Fabric 是一个基于 Python 的应用自动化部署工具,它可以快速、轻松地完成部署、系统管理和自动化任务的执行。Fabric 在 Python 的 paramiko 和 PyCrypto 库的基础上进行部署,使得远程命令执行和文件传输变得非常简单易用。 Fabric 的主要特…

    人工智能概论 2023年5月25日
    00
  • Python3.10.4激活venv环境失败解决方法

    Python3.10.4激活venv环境失败解决方法 背景 当我们使用Python编写过程中,可能需要使用虚拟环境。在搭建Python虚拟环境时,一些错误可能会出现。其中一个错误是: -bash: activate: No such file or directory 本攻略将会详细讲解如何解决这个问题。 解决方法 方法一:重新安装虚拟环境 如果你使用的是p…

    人工智能概览 2023年5月25日
    00
  • 在tensorflow中设置保存checkpoint的最大数量实例

    在TensorFlow中,保存Checkpoint是非常重要的一项功能,这能帮助我们在训练模型时保存模型的参数,以便在需要时恢复参数。但是,我们不想保存无限多的Checkpoint文件,因为不仅浪费存储空间,还会降低性能。因此,我们需要设置保存最大数量的Checkpoint文件,当超过设定的数量时,则自动删除最旧的Checkpoint文件。本攻略详细讲解在T…

    人工智能概论 2023年5月24日
    00
  • 2020新版本pycharm+anaconda+opencv+pyqt环境配置学习笔记,亲测可用

    下面是详细讲解“2020新版本pycharm+anaconda+opencv+pyqt环境配置学习笔记,亲测可用”的完整攻略。 环境配置学习笔记 安装Anaconda 首先需要下载安装Anaconda,官网下载速度较慢,可以考虑使用国内镜像下载。推荐使用清华镜像,下载地址为:https://mirrors.tuna.tsinghua.edu.cn/anaco…

    人工智能概览 2023年5月25日
    00
  • Python实现字符串逆序输出功能示例

    实现字符串逆序输出是Python中非常基础的操作。下面我会提供两种示例,来详细讲解如何使用Python实现这个功能。 示例一 第一种方法是使用Python内置的slice(切片)方法。代码如下: string = "hello world" reversed_string = string[::-1] print(reversed_str…

    人工智能概览 2023年5月25日
    00
  • Win2008 R2下配制负载均衡方法(图文简洁版)

    下面我将为您详细讲解“Win2008 R2下配制负载均衡方法(图文简洁版)”的完整攻略。首先,让我们从以下几个方面来讲解:环境准备、网络配置、安装NLB服务、创建NLB群集和添加主机节点、配置NLB群集属性以及测试NLB群集。 环境准备 在开始之前,我们需要准备好以下内容: 两台或以上Windows Server 2008 R2服务器; 一个HUB或交换机,…

    人工智能概览 2023年5月25日
    00
合作推广
合作推广
分享本页
返回顶部