兄弟们,姐妹们,各位在代码海洋里“游泳”(偶尔溺水)的同行们!今天,咱们不整那些虚头巴脑的概念,就来聊一个实战中100%会遇到的需求——文章分类管理。
你想想,一个博客、一个资讯站,甚至一个商品系统,能离得开分类吗?肯定不能啊!难道你想让所有文章都堆在一起,让用户像在大海里捞针一样找内容?那用户体验得多“复古”啊。
以前,你可能想着直接怼SQL:INSERT INTO category (name) VALUES ('Django干货')。停!打住!这都什么年代了,我们可是尊贵的Django开发者,手里握着ORM这把“瑞士军刀”,怎么能干出这种“手动搬砖”的活儿?
今天,我就带你用Django,像搭乐高一样,优雅地实现一个文章分类管理页面。不仅有自带“上帝视角”的Admin后台,更有我们亲手定制、颜值在线的前台管理页面。系好安全带,发车了!
第一幕:蓝图绘制——模型(Model)是灵魂
在Django里,模型就是你数据库的蓝图。你想存什么数据,首先得在这里定义好。对于文章分类,我们需要啥?简单到令人发指:
- 分类名称:比如“Python基础”、“Django进阶”。
- 分类描述:简单介绍一下这个分类是干嘛的(可选,但推荐有)。
- 创建时间:记录一下这个分类是啥时候诞生的。
来,看代码,我们在 models.py 里写下我们的“宪法”:
from django.db import models
class Category(models.Model):
# 分类名称,CharField是字符字段,max_length是最大长度,别忘了写
name = models.CharField(max_length=100, unique=True, verbose_name='分类名称')
# 分类描述,TextField可以存更长的文本,blank=True表示可选
description = models.TextField(blank=True, verbose_name='分类描述')
# 创建时间,auto_now_add=True表示对象第一次创建时自动设置为当前时间
created_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
class Meta:
# 这会在Admin后台和查询时,显示一个更友好的名字
verbose_name = '文章分类'
verbose_name_plural = verbose_name # 复数形式(英文里用),我们直接让它等于单数
def __str__(self):
# 这个方法非常重要!它决定了在Admin后台或其他地方,这个对象显示为什么
# 比如,没有这个方法,你看到的可能就是一堆 “Category object (1)”
return self.name
深度理解一下:
unique=True:保证了分类名不能重复,你总不能有两个“Django干货”吧?verbose_name:这是给人类看的名字,在Admin后台会非常直观。def __str__(self):这是模型的“名片”,务必写好!它能让你的调试和管理体验提升一个档次。
写完模型,例行公事,进行数据库迁移(这就是Django的魔法,你不用写一句SQL):
python manage.py makemigrations
python manage.py migrate
看到绿色的 OK,恭喜你,数据库里的“分类表”已经悄然建成了!
第二幕:上帝模式——Admin后台的秒级体验
Django最被吹爆的功能之一就是它的Admin后台。你几乎不用写前端代码,就能得到一个功能强大的管理界面。对于我们刚建的 Category 模型,只需要简单“注册”一下。

最低0.47元/天 解锁文章
900

被折叠的 条评论
为什么被折叠?



