思维导图
一、Djanog框架基础
MVT设计模式(model模型【操作数据库】、template模板【页面展示】、view视图【处理请求和调用模型模板】)
二、Django项目框架搭建
- 创建项目骨架 django-admin startproject 项目名
- 启动服务
(1)python manage.py runserver
(2)默认8080端口 - 配置setting.py文件
(1)INSTALLED_APP(当前项目需要加载的app路径包括列表)
(2)TEMPLATES(项目的模板配置)
(3)DATABASES(标识项目的数据库配置) - 管理后台与超级用户
(1)创建超级用户 python manage.py createsuperuser
(2)默认路径 http://127.0.0.1:8000/admin/ - 创建应用
python manage.py startapp 应用名
三、 模型
- ORM基本概念
(1)ORM把数据表与python类对应,表字段与属性对应、类实例与数据记录对应,并将对类实例的操作映射到数据库中。
(2)开发者不再需要写SQL代码,可以更加专注的完成业逻辑。 - Models定义
(1)直接继承或者间接继承models.Model类
(2)Model中定义字段(models.Filed的子类)
(3)时间类型字段中,Field参数 auto_now_add用于将首次创建的对象时间设置为当前时间 auto_now 用于首次保存对象时间设置为当前时间
(4)_ _str _ _方法用于将函数的返回值作为对象的显示值 - 应用完成数据库迁移
(1)生成迁移文件python manage.py makemigrations
(2) 执行迁移命令 python manage.py migrate - 模型字段类型
(1)常见字段类型 CharFiled(字符串) IntegerFiled(整数) BooleanFiled(布尔) TextFiled(长文本)DatatimeFlie(日期)
(2)自定义字段类型 - 三种关系字段类型
(1)多对一ForeignKey
(2)多对多(ManyToMany)
(3)一对一(OneToOneField) - 创建model实例对象的方法
(1)使用save方法实现(2)使用create方法实现 - 返回单实例的查询方法: get查询
- 返回多条数据记录,使用QuerySet对象的查询
(1)all():返回QuerySet中包含的所有对象
(2)filter():返回一个新的QuerySet 它包含满足查找参数的对象 - 使用update方法更新单个或多个Model实例
(1)更新单个模型
(2)更新多个模型 - 使用delete删除单个或多个Model实例
- 应用:话题和评论的Model定义及新增、修改、删除(实验二重点)模型定义:参考post包下的models.py文件、使用模型默认管理器objects的对模型对象进行批量查询和批量修改。
四、管理后台
使用register方法
admin.site.register(Topic TopicAdmin)
装饰器修饰
@admin.register(Topic)
class TopicAdmin(admin.ModelAdmin)
五、视图
六、模板
程序填空内容(猜的)
实验二内容
from django.contrib.auth.models import User
from django.db import models
# Create your models here.
class BaseModel(models.Model):
created_time = models.DateTimeField(auto_now_add=True, help_text='创建时间')
last_modified = models.DateTimeField(auto_now=True, help_text='修改时间')
class Meta:
abstract = True
class Topic(BaseModel):
title = models.CharField(max_length=255, unique=True, help_text='话题标题')
content = models.TextField(help_text='话题内容')
is_online = models.BooleanField(default=True, help_text='话题是否在线')
class Comment(BaseModel):
content = models.CharField(max_length=255, help_text='话题评论')
up = models.IntegerField(default=0, help_text='支持')
down = models.IntegerField(default=0, help_text='反对')
topic = models.ForeignKey(to=Topic, on_delete=models.SET_NULL, help_text='关联话题表', null=True)
class Role(models.Model):
name = models.CharField("角色名称", max_length=50, unique=True)
# 多对多
users = models.ManyToManyField(to=User)
实验5.1(ListView视图)
模板
简答(赌一手)