当前位置: 首页 > news >正文

实用指南:了解Django模型,从基础到实战

        在Django中,模型(Model)是连接逻辑和数据库的核心桥梁。它不仅可以帮我们抽象数据库表结构,还可以通过ORM技术让开发者脱离复杂的SQL语句,用Python代码即可轻松操作数据库这篇文章就让我们从基础到实战,一步步拆解Django模型

一、Django模型基础

在开始写代码之前,我们需要了解——什么是Django模型?它和ORM是什么关系?它为什么可以轻松操作数据库?

1.1 什么是Django模型

        Django模型是对数据库表的抽象表示,每个模型都对应数据库中的一张表,模型的每个属性又对应表中的一个字段。简单来说,可以把模型理解为用Python类描述的数据库表,它的核心作用有下面四点:

①定义数据结构:明确表中有哪些字段、字段类型是什么

②提供数据库接口:不用写 SQL,直接用 Python 方法操作数据(增删改查)

③实现数据验证:自动校验字段值是否符合规则(比如字符串长度、数值范围)

④处理数据库关系:轻松维护表之间的一对一、一对多、多对多关系

1.2 模型与ORM

        提到Django模型,一定绕不开ORM(Object Relational Mapping,对象关系映射);ORM 是一个 “中间层”,它能把 Python 中的对象自动映射到数据库表,让你不用写一行 SQL,就能用 Python 语法操作数据库,让操作量减少;

Django自带的ORM有5大核心功能:

①映射Python对象到数据库表           ②自动生成SQL查询           ③处理表之间的关联关系        

④内置数据验证规则                          ⑤支持数据库迁移

1.3 模型与MySQL

        Django支持多种数据库(SQLite,MySQL等等),其中MySQL是web开发中最常用的关系型数据库,下面来一步步配置Django模型来使用MySQL

(1)安装MySQL驱动

# 方式 1:安装 pymysql(兼容性好,推荐新手)
pip install pymysql
# 方式 2:安装 mysqlclient(性能更优,部分系统需提前装依赖)
pip install mysqlclient

(2)配置数据库连接

打开项目中的 settings.py 文件,找到DATABASES配置项,修改为MySQL连接信息

DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql',  # 数据库引擎(固定值)'NAME': 'mydatabase',  # 你要连接的数据库名(需提前在 MySQL 中创建)'USER': 'myuser',      # MySQL 用户名(如 root)'PASSWORD': 'mypassword',  # MySQL 密码'HOST': 'localhost',   # 数据库地址(本地默认 localhost)'PORT': '3306'         # MySQL 端口(默认 3306)}
}

二、Django模型入门:从定义到使用

了解完上面所说的基础后,我们可以来实战一个简单的图书模型

2.1 第一步:定义模型

Django模型必须写在APP的 models.py 文件中,并且模型类要继承django.db.models.Model

以图书为例,我们定义包含“标题、作者、出版日期、价格”的模型:

from django.db import models
class Book(models.Model):"""图书模型:存储图书的核心信息"""# 标题:字符串类型,最大长度 200(CharField 必须指定 max_length)title = models.CharField(max_length=200)# 作者:字符串类型,最大长度 100author = models.CharField(max_length=100)# 出版日期:日期类型publication_date = models.DateField()# 价格:十进制类型(max_digits 总位数,decimal_places 小数位数)price = models.DecimalField(max_digits=5, decimal_places=2)def __str__(self):"""返回模型对象的字符串表示(在 admin 后台和终端中显示)"""return self.title  # 这里返回书名,方便识别

模型代码的核心规则:①类必须继承models.Model        

②每个属性对应一个数据库字段        ③__str__ 用于友好显示对象信息,推荐写

2.2 第二步:使用模型的6个关键步骤

定义好模型后,需要经过下面的步骤才能真正用起来

(1)创建迁移文件

迁移文件是Django用于记录模型变化的“中间文件”,执行以下命令生成

# 格式:python manage.py makemigrations [App名]
python manage.py makemigrations myapp

执行后,会在 myapp/migrations 目录下生成类似 0001_initial.py 的文件,记录模型的初始结构

(2)应用迁移(同步到数据库)

迁移文件成功后,需要执行以下命令,将模型结构同步到MySQL数据库(自动创建表)

python manage.py migrate myapp

执行成功后,MySQL中会新增 myapp_book 表(默认表名:App名_模型名小写)

(3)在视图中查询模型数据

视图是处理业务逻辑的核心,我们可以在视图中通过模型的API查询数据:

# myapp/views.py
from django.shortcuts import render
from .models import Book  # 导入 Book 模型
def book_list(request):"""图书列表视图:查询所有图书并传给模板"""# 查询所有图书(等价于 SQL:SELECT * FROM myapp_book)books = Book.objects.all()# 将数据传给模板(上下文变量 books)return render(request, 'books/list.html', {'books': books})

(4)在模版中展示数据

模版负责前端渲染,我们用Django模版语法遍历展示图书数据:

图书列表

我的图书库

{% if books %}{% for book in books %}

{{ book.title }}

作者:{{ book.author }}

价格:¥{{ book.price }}

{% if book.publication_date %}

出版日期:{{ book.publication_date }}

{% endif %}
{% endfor %}{% else %}

暂无图书数据,快去 Admin 后台添加吧!

{% endif %}

(5)配置URL路由

最后,将视图和URL绑定,让用户能够访问到图书列表页:

# myapp/urls.py
from django.urls import path
from . import views
urlpatterns = [# 路径:/books/ → 对应 book_list 视图,name 用于反向解析path('books/', views.book_list, name='book_list'),
]

同时,需要在项目的主 urls.py 中包含这个App的路由:

# 项目主 urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [path('admin/', admin.site.urls),path('', include('myapp.urls')),  # 包含 myapp 的路由
]

(6)启动项目进行测试

在终端执行命令 python manage.py runserver 启动项目,访问 http://127.0.0.1:8000/books/,就能看到图书列表啦!

http://www.rkmt.cn/news/29461.html

相关文章:

  • 2025 年隔离变压器厂家最新推荐榜:结合中国电力设备行业协会测评权威数据,精选实力企业深度解析船用/三相伺/医疗专用隔离变压器公司推荐
  • MATLAB中的Excel文件操作:从入门到精通 - 指南
  • 2025 年保护罩生产厂家最新推荐榜:技术与服务双重测评,精选优质品牌权威指南PVC 法兰保护罩/不锈钢法兰保护罩/设备保护罩公司推荐
  • linux 查看防火墙放开的端口
  • 从数据孤岛到智能洞察:构建面向未来的 Operation intelligence 体系
  • 2025年低合金钢铸件厂家权威推荐榜单:水泵类铸件/矿山机械铸件/阀门类铸件源头厂家精选。
  • oracle sql格式化
  • 基于RNN循环神经网络的锂电池剩余寿命预测Matlab实现 - 教程
  • day19-API+functioncalling任务回顾+langchain快速入门
  • 杂题记录 3
  • 2025年口碑好的养生托玛琳床垫,保健托玛琳床垫厂家最新推荐排行榜
  • 2025年比较好的风光互补电动执行器,电动执行器厂家推荐及选择建议
  • cnpm -v 出现Error: Cannot find module node:util 问题解决 - 攻城狮
  • 2025年热门的安全生态红茶,宁波生态红茶厂家最新权威推荐榜
  • oracle 各类文件位置
  • 关于举办“2026中国(北京)国际森林草原消防与救援装备展览会”通知
  • 2025年热门的短视频运营方案
  • mac ida pro 9.2 配置 Python
  • 深入解析:FFmpeg安装(Windows)
  • 2025年发电机厂家推荐排行榜,发电机组出租,柴油发电机出租,甲醇发电机组租赁,移动式发电机出租,发电机组维修保养公司推荐
  • 深入解析:在 Kali Linux 上配置 MySQL 服务器并实现 Windows 远程连接
  • 2025年如何选餐饮设计哪家靠谱
  • 2025年农业专利申请排行榜
  • 10月第三篇笔记
  • 10月第二篇笔记
  • 配置网站,nginx必须的一个步骤
  • 2025年品牌装修公司,装修设计
  • 2025年比较好的智慧体育体测教室,智慧体育跑道哪家便宜
  • 2025年10月远程控制软件推荐榜:十强横向对比解析
  • 2025年10月远程控制软件推荐榜:节点小宝领衔十强对比评测 .