📜  django 表单请求 - Python (1)

📅  最后修改于: 2023-12-03 15:30:30.685000             🧑  作者: Mango

Django 表单请求 - Python

在 Django 中,表单是你与用户交互的主要方式之一。表单让你能够向用户请求数据,验证用户输入,并在需要时作出反应。

创建表单

Django 表单是根据一个简单的 Python 类创建的。这个类定义了表单中的字段、验证规则和其他相关内容。一个最基本的表单如下:

from django import forms

class ContactForm(forms.Form):
    name = forms.CharField()
    email = forms.EmailField()
    message = forms.CharField(widget=forms.Textarea)

以上代码定义了一个包含 nameemailmessage 三个字段的表单。字段的类型可以根据需要进行更改,详细信息可以查看 Django 表单文档。

处理表单请求

一旦一个表单类被定义,就可以在视图函数中使用它来处理表单请求了。以下是一个典型的表单处理函数的示例:

from django.shortcuts import render
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(
                subject=f"New message from {name}",
                message=message,
                from_email=email,
                recipient_list=['admin@example.com']
            )
            # 显示成功信息
            return render(request, 'success.html')
    else:
        form = ContactForm()
    return render(request, 'contact.html', {'form': form})

以上代码展示了如何在视图函数中使用表单类进行请求处理。首先检查 HTTP 请求的方法是否为 POST,如果是,则初始化表单对象并使用 is_valid() 方法对表单进行验证。如果表单数据有效,则处理数据并执行所需的操作(例如发送电子邮件),最后重定向到适当的页面。

表单模板

最后,我们需要创建一个模板来渲染表单。以下是模板的基本结构:

{% extends 'base.html' %}

{% block content %}
  <h2>Contact Us</h2>
  <form method="post">
    {% csrf_token %}
    {{ form.as_p }}
    <button type="submit">Send</button>
  </form>
{% endblock %}

以上代码使用 {{ form.as_p }} 来渲染表单。这将在每个表单字段下方显示一个 <p> 标签,其中包含输入字段和其相关的标签和错误信息。您可以使用其他方法如 as_table()as_ul() 来渲染不同类型的表单。

结论

在 Django 中处理表单请求非常简单,只需要定义一个表单类、创建一个视图函数来使用它,并创建一个模板来渲染表单。使用 form.is_valid() 来验证表单输入,并处理表单数据以执行所需操作。通过学习 Django 表单处理,您可以轻松地捕获和验证用户输入,从而增强您的网站的交互性和响应能力。