深入Django(六)

简介: 本文档介绍了Django的表单系统,用于处理用户输入和数据验证。首先,表单通过声明式方式定义,如在`forms.py`中基于模型创建表单类。接着,在视图中处理GET和POST请求,使用`is_valid()`和`save()`方法验证和保存数据。在模板中,使用标签渲染表单和错误信息。表单系统还包括内置及自定义验证规则,以及与模型的集成,如`ModelForm`方便数据保存。此外,还有表单集、表单继承和自定义字段等高级功能。表单系统简化了用户输入管理和数据安全。

Django的表单系统

引言

在前五天的教程中,我们介绍了Django的基本概念、模型、视图、模板和URL路由。今天,我们将讨论Django的表单系统,它是处理用户输入、验证数据和与模型交互的重要组件。

Django表单系统概述

Django的表单系统提供了一种声明式的方式来创建表单。它允许你定义表单的结构、字段和验证规则,然后自动生成HTML表单。

创建表单

  1. 定义表单类:在你的应用目录下,创建一个forms.py文件,并定义一个表单类。
  2. # forms.pyfrom django import formsfrom .models import Authorclass AuthorForm(forms.ModelForm):    class Meta:        model = Author        fields = ['name', 'email']
  3. 在这个例子中,我们创建了一个AuthorForm类,它基于Author模型,并包含nameemail字段。
  4. 在视图中使用表单:在视图中,你可以创建表单实例,并处理GET和POST请求。
  5. # views.pyfrom django.shortcuts import renderfrom .forms import AuthorFormdef author_create(request):    if request.method == 'POST':        form = AuthorForm(request.POST)        if form.is_valid():            form.save()            # 重定向或执行其他操作    else:        form = AuthorForm()    return render(request, 'author_form.html', {'form': form})
  6. 在模板中渲染表单:在模板中,你可以渲染表单并显示错误信息。
  7. <!-- author_form.html --><form method="post">    {% csrf_token %}     {{ form.as_p }}     <button type="submit">Submit</button></form>

表单验证

Django表单系统提供了强大的验证机制,确保用户输入的数据是有效的。

  1. 内置验证:Django为每个字段类型提供了内置的验证规则。
  2. 自定义验证:你可以在表单类中定义自定义验证方法。
  3. def clean_email(self):    email = self.cleaned_data.get('email')    if not '@' in email:        raise forms.ValidationError("Enter a valid email address")    return email

表单与模型

Django表单系统与模型紧密集成,使得创建和管理表单变得简单。

  1. ModelFormModelForm是一个特殊的表单类,它允许你直接将表单与模型关联。
  2. 保存数据:使用save()方法,你可以将表单数据保存到数据库。
  3. if form.is_valid():    author = form.save()

高级表单功能

Django表单系统还提供了一些高级功能,如表单集、表单继承和自定义字段。

  1. 表单集FormSet允许你管理一组表单实例。
  2. 表单继承:你可以继承现有的表单类来扩展或修改表单行为。
  3. 自定义字段:Django允许你创建自定义字段类型,以满足特定的需求。

总结

在今天的教程中,我们学习了Django表单系统的基本概念,包括如何创建表单、处理表单数据、验证数据以及与模型集成。表单系统是Django中处理用户输入和数据验证的重要组件,它大大提高了Web应用的可用性和安全性。

相关文章
|
3月前
|
人工智能 数据可视化 机器人
5个硬性指标:海外仓跨境呼叫中心选型,区域分配准确率98%+背后的技术能力盘点
本文深度解析海外仓跨境客服选型困境与方案,聚焦多渠道统一接入、区域/经理精准分配(≥98%)、AI对接物流接口、全链路质控、高稳定性(SLA≥99.9%)五大硬指标,横向对比合力亿捷等5家主流厂商,为中大型海外仓企业提供可落地的选型决策依据。(239字)
202 0
|
3月前
|
前端开发 安全 Java
【AgentScope Java新手村系列】(12)计划模式
计划模式 — enablePlanMode() 让 LLM 强制先写计划再执行,内置 plan_enter/write/exit 与 todo_write 工具。
408 0
|
4月前
|
JSON JavaScript 调度
流式加载 / 按需加载技术
流式加载 / 按需加载技术
|
机器学习/深度学习 人工智能 移动开发
阿里又出新玩法|开箱即用的算法集 MNN Kit
今天的移动开发,AI随处可见:从手机淘宝里的拍立淘,到淘宝直播里的商品识别,到头条的个性化推荐,到抖音直播里的人脸识别,人工智能在移动app里发挥的作用越来越大。它也逐渐从Snapchat那些社交软件的一些比较好玩的属性(如人脸贴纸),慢慢发展到了淘宝里面那些能够真正为商业赋能的应用场景。在这样的背景下,阿里巴巴淘系技术的MNN团队,近日发布了开箱即用的工具集MNN Kit。
3539 0
阿里又出新玩法|开箱即用的算法集 MNN Kit
|
7月前
|
Web App开发 前端开发 安全
豫唐工具集正式发布:重新定义前端开发工具体验
2026年2月26日,豫唐团队发布开源免费的“豫唐工具集”——轻量纯前端在线平台,含ICO生成、摸鱼神器、密码生成、项目管理计算器与数独游戏五大工具,本地运行、零数据上传,兼顾安全、效率与极简美学。
568 6
阿里云账号注册、云服务器购买、域名备案流程(图文详细教程)
本文详细介绍了2025年阿里云域名备案的全流程,包括注册阿里云账号、企业实名认证、购买服务器、创建域名信息模板、购买域名、域名备案及查询备案号等步骤。通过图文结合的方式,清晰展示了每个环节的操作方法和注意事项,帮助用户顺利完成域名备案。文章强调了域名备案的前提是国内需有一台服务器,并提供了具体配置建议,同时提醒用户注意邮箱验证和短信核验等关键步骤,确保备案顺利通过。
|
9月前
|
机器学习/深度学习 人工智能 决策智能
小模型驱动大智能:NVIDIA新研究实现2.5倍效率提升,成本直降70%
NVIDIA联合港大提出ToolOrchestra,用小模型动态编排工具链,通过强化学习优化推理路径,在保证智能水平的同时提升2.5倍效率、降低70%成本,实现“以小控大”的高效AI新范式。
320 0
|
机器学习/深度学习 监控 算法
【软件设计师】常见的算法设计方法——迭代法
【软件设计师】常见的算法设计方法——迭代法
|
算法 数据挖掘 API
python opencv图像处理算法之GrabCut算法
python opencv图像处理算法之GrabCut算法
918 0