Python学习笔记:7.1.3 Django快速建站 - 模型和超管

前言:本文是学习网易微专业的《python全栈工程师 - Django快速建站》课程的笔记,欢迎学习交流。同时感谢老师们的精彩传授!

一、课程目标
  • 了解Django中模型的含义和作用
  • 掌握迁移数据库的操作
  • 掌握超级管理员的创建方法
  • 掌握管理界面的配置方法
二、详情解读
2.1.模型
2.1.1.网页内容来源
  • 静态:直接写到HTML文件中
  • 动态:来自数据库。使用SQL语句读取数据库,Django通过ORMObject-Relational Mapping,对象关系映射)来实现对数据库的读写。
2.1.2.ORM
  • ORM:在关系型数据库和业务实体对象之间创建映射关系。操作业务对象时,不需要使用SQL语句,只需要操作对象的属性和方法。
  • 优点:可移植性强,安全性好,查询语法简单。
  • ORM实现方法:
    – 编写数据模型类
    – 位置:models.py(也可以是其他文件)
    – 继承:django.db.models.Model
    – 对应的数据库表:appname_modelname,(都是小写字母)
    – 创建数据库表:迁移操作,命令如下 :
python manage.py makemigrations
python manage.py migrate
实操:

myproject/blog/models.py文件中写入以下内容

from django.db import models
from django.utils import timezone
from django.contrib.auth.models import User

class BlogArticles(models.Model):
   title = models.CharField(max_length=300)
   author = models.ForeignKey(User, on_delete=models.CASCADE,related_name='blog_posts')
   body = models.TextField()
   publish = models.DateTimeField(default=timezone.now)

   class Meta:
       ordering = ('-publish', )

   def __str__(self):
       return self.title
示例解析:

在这里插入图片描述

2.1.3.字段
title = models.CharField(max_length=300)
  • 模型中每一个字段都应该是某个Field类的实例,Django利用这些字段类来实现以下功能:
    – 字段类型用以指定数据库数据库类型(如:INTEGERVARCHARTEXT)。
    – 在渲染表单字段时默认使用的HTML 视图(如:<input type="text">,<select>)。
    – 基本的有效性验证功能,用于Django后台和自动生成的表单。
2.1.4.字段类型

更多内容请参考文章:Django模型系统的常用字段和字段参数

  • 自定义字段类型
2.1.5.示例分析一:
  • 字段选项:每个字段类型中需要指定一些特定的参数
title = models.CharField(max_length=300)

说明:
1).CharField:表示字符类型
2).max_length:数据库存储VARCHAR数据时的字节最大长度

publish = models.DataTimeField(default=timezone.now)

说明:
1).DateTimeField:表示日期时间类型
2).default:默认指定的时间

body = models.TextField()

说明:TextField表示文本类型

2.1.6.示例分析二:
from django.contrib.auth.models import User

class BlogArticles(models.Model):
	author = models.ForeignKey(User, on_delete=models.CASCADE, related_name='blog_posts')
  • ForeignKey:外键,一对多(多对一)关系
    说明:
    1).User:表示被关联的类
    2).on_delete=models.CASCADE:表示联级删除
    3).related_name='blog_posts':表示User的实例以blog_posts属性反向查询到BlogArticles的实例

在项目目录下,即myproject目录下,运行命令:

# 第一步
python3 manage.py makemigrations
# 第二步
python3 manage.py migrate

运行结果:
在这里插入图片描述

2.1.5.迁移数据
  • 迁移操作:
python manage.py makemigrations
python manage.py migrate
2.2.管理功能
2.2.1.创建超级管理员
  • 命令:
python manage.py createsuperuser
  • 登录管理界面:管理界面对应一个专门的管理应用,http://localhost:8000/admin/
    在这里插入图片描述
    在这里插入图片描述
2.2.2.添加管理内容

上面的后台管理界面只显示用户模块的内容,没有显示blog的内容,进行下面的操作:

  • 编辑./blog/admin.py文件,写入以下代码
from django.contrib import admin
from .models import BlogArticles

admin.site.register(BlogArticles)

保存上面代码,此时后台界面是这样的:
在这里插入图片描述
Blog部分的内容只显示文章的标题,右边大片空白:
在这里插入图片描述
为了在文章列表中显示更多的内容,继续编辑./blog/admin.py文件,替换为以下代码:

from django.contrib import admin
from .models import BlogArticles

class BlogArticlesAdmin(admin.ModelAdmin):
    # 要显示的字段
    list_display = ('title', 'author', 'publish')
    list_filter = ('publish', 'author')
    search_fields = ('title', 'body')
    raw_id_fields = ('author',)
    date_hierarchy = 'publish'
    ordering = ['-publish', 'author']

admin.site.register(BlogArticles, BlogArticlesAdmin)

修改后界面变化:
在这里插入图片描述

三、课程小结
  • 01 创建模型
  • 02 管理功能
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值