📜  Django表单(1)

📅  最后修改于: 2023-12-03 14:40:48.233000             🧑  作者: Mango

Django表单

Django表单是Django框架中的一项重要功能,它让开发人员可以方便地创建、接受和处理用户提交的表单数据。使用Django表单可以轻松处理处理常见的HTML表单元素,例如文本框、下拉框、单选框等等。

创建表单

要创建Django表单,你需要继承forms.Form类,并定义表单中的所有字段。下面是一个简单的例子:

from django import forms

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

上面的代码定义了一个包含三个字段的表单,分别是“name”、“email”和“message”。其中,“name”是一个CharField类型的文本框;“email”是一个EmailField类型的文本框,它会自动验证用户输入的是否是合法的邮箱地址;“message”是一个Textarea类型的文本域。

表单视图函数

Django表单需要一个视图函数来接收提交的数据,并将其处理后返回给用户。视图函数应当遵循以下步骤:

  1. 获取表单数据。
  2. 验证表单数据。
  3. 处理表单数据。
  4. 返回响应结果。

下面是一个简单的实现:

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']
            # 发送邮件等其他操作
            return render(request, 'success.html')
    else:
        form = ContactForm()
    return render(request, 'contact.html', {'form': form})

上面的代码定义了一个“contact”视图函数,它会根据请求的方法选择相应的操作。如果是POST请求,就需要从请求中获取表单数据,并进行验证;如果是GET请求,就直接渲染表单页面。

渲染表单

要在HTML页面中渲染Django表单,你需要使用Django的模板语言。下面是一个简单的例子:

{% extends 'base.html' %}

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

上面的代码使用了{% csrf_token %}标签来生成一个安全令牌,用于防止跨站请求伪造。{{ form.as_p }}标签会自动生成表单的HTML代码,其中的“as_p”表示使用“段落”(paragraph)标签来包装表单元素。

总之,Django表单是Django框架的一个重要组成部分,为开发人员提供了方便、快捷、安全的表单处理方式,使得开发者可以专注于业务逻辑的实现而无需过多关注表单处理细节。