Python-Django学习目录:

  1. 环境搭建和基础知识:包括安装Python和Django、了解Python基础语法、掌握Django框架的基本概念和工作原理等。
  2. 模型和数据库:包括创建模型、定义字段、使用Django ORM进行数据库操作等。
  3. 视图和URL:包括定义视图函数、URL路由配置、模板渲染等。
  4. 表单和验证:包括表单的创建、数据的提交、表单验证等。
  5. 用户认证和权限管理:包括用户注册、登录、注销、权限管理等。
  6. 静态资源管理和部署:包括管理静态资源、部署Django应用等。



模型和数据库

创建模型

在Django中,模型是用于与数据库进行交互的类,它定义了数据库中表的结构和字段。模型是Django ORM的核心,ORM(Object-Relational Mapping)是一种将对象映射到关系数据库中的技术。

要创建一个模型,需要创建一个继承自django.db.models.Model的类,并定义一些字段,例如:

from django.db import models

class Book(models.Model):
    title = models.CharField(max_length=100)
    author = models.CharField(max_length=50)
    price = models.DecimalField(max_digits=6, decimal_places=2)
    pub_date = models.DateField()

以上是一个简单的Book模型类,包含了titleauthorpricepub_date四个字段。其中,CharField表示一个字符串字段,DecimalField表示一个小数字段,DateField表示一个日期字段。还有其他类型的字段可以使用,例如整数字段、布尔字段等。

定义字段

每个字段都有一些常见的参数,用于定义字段的特性,例如:

  • max_length:字符串字段的最大长度;
  • null:是否允许为空;
  • default:默认值;
  • unique:是否唯一;
  • db_index:是否要在数据库中创建索引。

例如,可以给title字段添加一个unique=True参数,表示这个字段的值在整个表中是唯一的,不能重复:

title = models.CharField(max_length=100, unique=True)

还可以给price字段添加一个default参数,表示如果没有指定价格,则使用默认价格:

price = models.DecimalField(max_digits=6, decimal_places=2, default=0)

使用Django ORM进行数据库操作

Django ORM提供了一系列方法,用于对数据库进行操作,例如:

  • all():返回模型类对应的表的所有记录;
  • filter():根据条件过滤记录;
  • exclude():排除满足条件的记录;
  • get():根据条件返回单个记录;
  • create():创建一条新记录;
  • save():保存记录;
  • delete():删除记录。

例如,可以使用以下代码创建一条新的Book记录:

book = Book(title='Python入门教程', author='张三', price=29.99, pub_date='2022-01-01')
book.save()

以上代码创建了一条Book记录,并将其保存到数据库中。save()方法将自动创建一条新记录,或者更新已有记录。

还可以使用以下代码查询所有的Book记录:

books = Book.objects.all()
for book in books:
    print(book.title, book.author, book.price, book.pub_date)

以上代码查询数据库中所有的Book记录,并输出每个记录的titleauthorpricepub_date字段。

个人见解

Django ORM是一个非常强大和易用的ORM框架,它可以大大简化我们与数据库进行交互的工作。通过定义模型类和字段,我们可以轻松地创建和管理数据库表,并使用Django ORM提供的方法对数据库进行操作。而且,Django ORM还可以自动创建和维护数据库的结构和关系,无需手动编写和维护SQL语句,这大大简化了数据库开发的工作。

需要注意的是,Django ORM虽然强大,但也有一些限制和缺陷。例如,Django ORM在处理大量数据时性能可能较低,需要进行优化。此外,Django ORM也可能存在一些版本兼容性问题,需要注意选择合适的版本。

补充一些个人见解:

除了以上提到的Django ORM的优点和缺点之外,还有一些需要注意的方面,例如:

  • 数据库迁移:当我们修改模型类的结构时,需要进行数据库迁移,以便将数据库的结构更新为最新的模型类结构。Django ORM提供了一些工具来简化数据库迁移的过程,例如makemigrationsmigrate命令。
  • 跨数据库支持:Django ORM支持多种不同的数据库后端,例如MySQL、PostgreSQL、SQLite等。但是,在使用Django ORM时,需要注意不同数据库之间的差异,以避免因为数据库差异导致的错误。
  • 性能优化:由于Django ORM是一个高级别的ORM框架,它可能无法满足一些特殊的性能需求。在处理大量数据时,可能需要使用原生SQL语句或其他性能更高的ORM框架。