资讯动态

Django初学第二章第四节 Class 的创建(10月24日)

发布时间:2026/10/26 8:01:59 来源:尧图企业网站定制
关于Django项目中创建类class)的相关书写代码上一节我们把项目的地基搭好了这一节来做 Django 中最核心、也最有意思的一步——创建 Class类。在 Django 里我们说的创建类通常指的是在models.py中创建数据模型类Model。它一句话概括就是一句话理解模型类 数据库表。你用 Python 写一个类Django 就帮你自动生成一张对应的数据库表一个属性对应一列字段。一、为什么用 Class 而不是直接写 SQL刚学编程时很多人第一次接触类会觉得抽象。其实在 Django 里很好理解写一个类Article文章→ 数据库里就有一张article表类里的属性title、content→ 表里的列字段创建一个类的实例 → 往表里插入一行数据这种方式叫ORM对象关系映射你只管写 PythonSQL 交给 Django。好处是不会写 SQL 也能操作数据库而且换数据库MySQL ↔ PostgreSQL几乎不用改代码。二、创建一个模型类打开你的应用目录下的models.py例如blog/models.py我们来创建一个博客文章类# blog/models.py from django.db import models class Article(models.Model): # 文章标题字符串类型最长 100 字符 title models.CharField(标题, max_length100) # 文章正文长文本类型可以为空blankTrue 表示表单中可不填 content models.TextField(正文, blankTrue) # 阅读量整数类型默认为 0 views models.IntegerField(阅读量, default0) # 发布时间创建时自动记录当前时间 created_at models.DateTimeField(发布时间, auto_now_addTrue) def __str__(self): # 让对象在后台和命令行里显示为文章标题而不是 Article object (1) return self.title逐行拆解新手重点看这里class Article(models.Model)继承models.Model是关键继承了它Django 才会把这个类当成数据表来处理。CharField(max_length100)短文本必须指定最大长度。TextField()长文本没有长度限制适合存文章内容。IntegerField(default0)整数default给了默认值。DateTimeField(auto_now_addTrue)数据第一次保存时自动填入当前时间。每个字段的第一个参数如标题是人类可读名称会显示在后台管理界面里。三、常用字段类型速查表CharField短字符串用户名、标题TextField长文本正文、简介IntegerField整数阅读量、库存FloatField/DecimalField小数价格BooleanField真 / 假是否发布DateTimeField日期 时间发布时间ForeignKey外键关联另一张表文章的作者四、让模型生效两条命令类写好了但数据库里还没有这张表。Django 用迁移Migration机制把模型同步到数据库在项目根目录的终端里依次执行python manage.py makemigrations这条命令的意思是Django帮我检查模型改动生成一个迁移文件。你会看到类似输出Migrations for blog: blog\migrations\0001_initial.py - Create model Articlepython manage.py migrate这条命令把迁移文件真正应用到数据库创建出表。看到一串OK就成功了。记住口诀改了models.py→makemigrations→migrate。先记账再执行两步缺一不可。五、验证一下把模型注册到后台打开blog/admin.py注册我们的类# blog/admin.py from django.contrib import admin from .models import Article admin.site.register(Article)然后创建一个超级管理员账号python manage.py createsuperuser启动开发服务器浏览器访问http://127.0.0.1:8000/adminpython manage.py runserver登录后你就能看到Articles模块可以像填表单一样添加文章——不需要写一行 SQL六、在代码里使用这个类进入python manage.py shell体验一下 ORM 的威力from blog.models import Article # 创建一篇文章相当于 INSERT a Article(title我的第一篇博客, contentHello Django!) a.save() # 查询所有文章相当于 SELECT * Article.objects.all() # QuerySet [Article: 我的第一篇博客] # 按标题查询相当于 WHERE Article.objects.get(title我的第一篇博客)看到没有这就是__str__方法的功劳——查询结果显示的是文章标题而不是冷冰冰的 Article object (1)。小结模型类写在models.py里必须继承models.Model一个类 一张表一个属性 一列字段改动模型后记得makemigrationsmigrate写__str__方法让对象显示更友好在admin.py里注册后可直接用后台管理数据下一篇第二章第五节「数据的增删改查」——我们将深入学习 QuerySet 的过滤、排序与分页。有问题欢迎在评论区留言

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑