首页
学习
活动
专区
圈层
工具
发布
37 篇文章
1
python-Django-安装与配置(一)
2
python-Django-安装与配置(二)
3
python-Django-基础概念(一)
4
python-Django-基础概念(二)
5
python-Django 模型层-模型层简介
6
python-Django 模型层-模型层示例
7
python-Django-命令行工具
8
python-Django 模型层-模型层的字段类型
9
python-Django-Django 模型层的关联关系(一)
10
python-Django-Django 模型层的关联关系(二)
11
python-Django-Django 数据库迁移(一)
12
python-Django-Django 数据库迁移(二)
13
python-Django-Django 视图层简介(一)
14
python-Django-Django 视图层简介(二)
15
python-Django-URL 路由(一)
16
python-Django-URL 路由(二)
17
python-Django-视图函数(一)
18
python-Django-视图函数(二)
19
python-Django-Django 模板引擎(一)
20
python-Django-Django 常用模板标签和过滤器(一)
21
python-Django-Django 常用模板标签和过滤器(二)
22
python-Django-表单基础概念
23
python-Django-Django 表单简介
24
python-Django-表单验证(一)
25
python-Django-表单验证(二)
26
python-Django-文件上传(一)
27
python-Django-文件上传(二)
28
python-Django-文件上传(三)
29
python-Django 高级特性-Django 中间件(一)
30
python-Django 高级特性-Django 中间件(二)
31
python-Django 高级特性-Django 缓存(一)
32
python-Django 高级特性-Django 缓存(二)
33
python-Django 高级特性-Django 分页(一)
34
python-Django 高级特性-Django 分页(二)
35
python-Django 高级特性-Django 异步任务(一)
36
python-Django 高级特性-Django 安全(一)
37
python-Django 高级特性-Django 安全(二)
清单首页django文章详情

python-Django-表单基础概念

简介

表单是Web应用程序中最常用的组件之一,它允许用户提交数据并与Web应用程序交互。在Django中,表单是由Django表单框架处理的,它允许您轻松地创建HTML表单并处理表单数据。

定义表单类

在Django中,表单类是定义表单字段和验证规则的Python类。每个表单字段都映射到一个HTML表单元素,并具有相应的验证规则。

表单类继承自django.forms.Form类,并定义一个或多个表单字段。每个表单字段都是一个Field类的实例,它定义了字段的类型、标签、验证规则等。

以下是一个简单的表单类示例:

代码语言:javascript
复制
from django import forms

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

在这个示例中,我们定义了一个名为ContactForm的表单类,它包含三个字段:name、email和message。name字段是CharField类型,email字段是EmailField类型,message字段是CharField类型,但使用了Textarea小部件来显示多行文本。

在模板中显示表单

要在模板中显示表单,您需要将表单类实例化,并将其传递到模板上下文中。然后,在模板中使用Django模板语言(DTL)来呈现表单字段。

以下是一个简单的模板示例,它显示上面定义的ContactForm:

代码语言:javascript
复制
<form method="post">
    {% csrf_token %}
    {{ form.as_p }}
    <button type="submit">Submit</button>
</form>

在这个示例中,我们使用form.as_p标记来呈现表单字段。as_p标记以HTML段落(<p>)的形式显示表单字段,每个字段都有一个标签和一个表单元素。

还需要注意的是,我们在表单中包含了一个csrf_token标记。这是Django防止跨站请求伪造(CSRF)攻击的一种机制,它生成一个隐藏的表单字段,其中包含一个随机的令牌值。在处理表单提交时,Django将检查令牌是否有效。

处理表单数据

在Django中,表单数据是由视图函数处理的。当用户提交表单时,Django将请求发送到视图函数,并将表单数据作为POST请求参数传递给函数。

以下是一个处理表单数据的简单视图函数示例:

代码语言:javascript
复制
from django.shortcuts import render
from django.http import HttpResponseRedirect
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 HttpResponseRedirect('/thanks/')
    else:
        form = ContactForm()
    return render(request, 'contact.html', {'form': form})

在这个示例中,我们首先检查请求的HTTP方法是否为POST。如果是POST,我们使用提交的数据初始化表单类,并检查表单数据是否有效。如果表单数据有效,则从表单中提取数据并进行相应的处理。最后,我们将用户重定向到一个“感谢”页面。

如果请求的HTTP方法不是POST,则说明这是第一次请求该页面,我们将表单类实例化,并将其传递到渲染模板的上下文中。

下一篇
举报
领券