深入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应用的可用性和安全性。

相关文章
|
24天前
|
Python
深入Django(三)
本文详细介绍了Django视图(Views)。视图是Django中处理用户请求并返回响应的函数或类,负责应用程序逻辑。文章通过实例展示了如何创建简单视图、使用类视图以及如何与模板配合动态生成HTML内容。此外,还提到了视图处理表单、权限认证和错误处理的功能。总之,Django视图是应用的核心组件,用于处理业务逻辑和用户交互。
9 2
|
24天前
|
前端开发 Python
深入Django(四)
**Django模板系统**简介:用于结合数据与HTML,生成网页内容。模板系统让动态数据能插入静态页面,模板语言支持Python代码嵌入。创建模板涉及在应用目录下建立`templates`文件夹及编写HTML。使用时,视图通过`render`函数加载模板,URL配置指向相应视图。模板语言包含控制结构(如if、for)、过滤器(如日期格式化、字符串截取)和自定义过滤器。模板继承则促进布局一致性,允许子模板扩展基础模板。模板系统简化了Django中的动态内容渲染。
9 3
|
24天前
|
前端开发 数据管理 API
深入Django(二)
本文介绍了Django的模型(Models)系统,它是Django框架中处理数据库的核心部分。模型是通过Python类定义的,对应数据库中的表,属性代表表的字段。通过模型,可以方便地操作数据,如创建、查询、更新和删除记录。文中展示了如何创建`Author`和`Post`模型,以及如何使用ORM进行对象操作。此外,还提到了模型的高级特性,如字段选项、字段类型、关系以及自定义方法和属性,这些都是Django高效管理数据的关键。理解模型对于Django应用开发至关重要。
19 1
|
6月前
|
缓存 安全 API
Django
Django是一个用Python编写的开源Web框架,用于构建可扩展、高性能、安全的Web应用程序。Django具有许多内置功能,如用户认证、管理界面、缓存、静态文件处理等,可以帮助开发者快速搭建和开发Web应用程序。 Django的用途主要包括:
70 1
|
设计模式 缓存 前端开发
Django——小结
 Python的WEB框架有Django、Tornado、Flask 等多种,Django是重量级选手中最有代表性的一位,它的优势为:大而全,框架本身集成了ORM、模型绑定、模板引擎、缓存、Session等诸多功能。
112 0
Django——小结
|
Python
Django 项目重命名
  在日常学习工作过程中,我们难免需要复用以前的项目,这里讲下复用 Django 项目并重命名的过程。 1.修改项目名称,使用 pycharm -> refactor 重命名整个项目。   2.修改 manage.py 和 Django 下和项目名称相同的文件夹,使用 grep 指令找出和项目有关的字符串,如: grep 'test4' *.py 逐一修改。
4529 0
|
数据库 数据安全/隐私保护 Python
|
前端开发
Django-SerializerMethodField
DRF-Serializer-SerializerMethodField,更加灵活的修改返回给前端的数据
|
算法 前端开发 程序员
初识Django(一)
什么Django        Django是一个开放源代码的Web应用框架,由Python写成。采用了MVC的框架模式,即模型M,视图V和控制器C。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件。
1564 0
|
Web App开发 前端开发 数据库
Django中的ModelForm
一、ModelForm的基本用法示例: from django import forms from app01 import models class BookModelForm(forms.
1156 0