5、将数据保存到数据库中

django使用ORM方式建立操作数据表

ORM (Object Relational Mapping )把类映射成数据库中的表,把类的一个实例对象映射成数据库中的数据行,把类的属性映射成表中的字段,通过对象的操作对应到数据库表的操作,实现了对象到 SQL、SQL 到对象转换过程。


image.png

image.png

1、model模型第一步:设计模型

完成博客,我们需要存储三种数据。文章分类、文章、文章标签。
1、分类表结构设计:
表名:Category、分类名:name (科技,教学,游戏,动漫)
2、标签表设计:
表名:Tags、标签名:name (俄乌局势,360报告)
3、文章表结构设计:
表名:Article、标题:title、摘要:intro、分类:category、标签:tags、内容:body、创建时间:created_time、作者:author
其中:
分类和文章是一对多的关系,标签和文章是多对多的关系,作者和文章是一对多的关系。

2、模型第二步

1:创建模型

blog/models.py

from django.db import models
class Category(models.Model):
    name = models.CharField(verbose_name='分类', max_length=100)
class Tags(models.Model):
    name = models.CharField('标签', max_length=100)
class Article(models.Model):    
title = models.CharField('文章标题',max_length=70)
    intro = models.TextField('文章内容', max_length=200, blank=True)
    created_time = models.DateTimeField(‘发布时间',auto_now_add=True)

2:创建模型 之间 的关联

image.png
from django.contrib.auth.models import User
    category = models.ForeignKey(Category, on_delete=models.CASCADE, verbose_name='分类', default='1')
    tags = models.ManyToManyField(Tags, blank=True)
user = models.ForeignKey(User, on_delete=models.CASCADE, verbose_name='作者')

3:元数据改中文匹配,其他类同

class Category(models.Model):
    name = models.CharField('分类',max_length=100)
    #下面为新增代码,
    class Meta:
        verbose_name = '分类'
        verbose_name_plural = verbose_name
    def __str__(self):
        return self.name

我们给每个类都增加了一个内部类Meta和str方法属性,刷新。

image.png

4:在文章中增加字段:

    keywords=models.CharField('文章关词',max_length = 120,blank = True,null = True)
    views=models.PositiveIntegerField('阅读量',default = 0)
    top=models.IntegerField(choices=[(0,'否'),(1,'是'),], default = 0,verbose_name = '是否推荐')
    modified_time=models.DateTimeField('修改时间',auto_now = True)

模型第三步:迁移数据

数据模型设计好之后,我们就需要迁移数据到数据库。
创建模型文件:只是创建了一个对象的数据文件,为改动创建迁移记录;python manage.py makemigrations
迁移数据:把表结构在数据库中建立,将操作同步到数据库
python manage.py migrate

image.png

第四步:可以使用Django管理后台admin查看建立的应用

1、创建管理员帐号密码
创建一个管理员帐号
python manage.py createsuperuser
……

image.png

2、启动开发服务器
输入如下命令:
python manage.py runserver
在浏览器中访问
http://127.0.0.1:8000/admin/
3、在admin下注册blog应用
打开blog/admin.py文件,加入如下内容:

from django.contrib import admin
from .models import Article,Tags,Category
admin.site.register(Tags)
admin.site.register(Article)
admin.site.register(Category)

刷新页面,我们就能看到blog这个应用了。
4、Django 管理应用blog

Django 最强大的部分之一是自动管理界面。它从你的模型中读取元数据,提供一个快速的、以模型为中心的界面,受信任的用户可以管理你网站上的内容。管理的推荐使用范围仅限于一个组织的内部管理工具。
在admin.py中建立自动管理界面,在类上加装饰器,把原注册的加注释,代码如下:

from django.contrib import admin
from .models import Article, Tags, Category

admin.site.register(Tags)
# admin.site.register(Article)
admin.site.register(Category)

@admin.register(Article)
class ArticleAdmin(admin.ModelAdmin):
# 界面显示的列
    list_display=('id', 'category', 'title', 'user','views','created_time')
    #list_per_page设置每页显示多少条记录,默认是100条
    list_per_page = 50
    #ordering设置默认排序字段,负号表示降序排序
    ordering = ('-created_time',)
    #fk_fields 设置显示外键字段
    fk_fields = ['category']
    # 设置id字段可以点击进入编辑界面
    list_display_links = ['id']
    # 指定标题title做为搜索字段
    search_fields = ['title']
    list_filter = ['user']  # 右侧栏过滤器,按作者进行筛选
    date_hierarchy = 'created_time'  # 详细时间分层筛

admin.site.site_header = '内容管理后台'
admin.site.site_title = '测试知识内容平台'
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,270评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,489评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,630评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,906评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,928评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,718评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,442评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,345评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,802评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,984评论 3 337
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,117评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,810评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,462评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,011评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,139评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,377评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,060评论 2 355

推荐阅读更多精彩内容