组件,映射数据库部分

组件

比模型继承的内容更小,只抽取出来一块小功能(比如页面的logo,导航栏,操作栏等等)

<style>
        .nav{
            background-color: aquamarine;
            height: 100px;
        }
        a{
            text-decoration: none;
            color: black;
            margin-left: 20px;
        }
    </style>

<!--封装一部分的小功能-->
<div class="nav">
    <a href="">免费课程</a>
    <a href="">付费课程</a>
    <a href="">联系老师</a>
</div>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<!--show需要使用导航栏-->
<!--引入导航栏-->
<!--include标签从模板文件夹位置出发找组件-->
{% include 'day6/zujian.html' %}
<h1>这是show页面</h1>
</body>
</html>

静态文件

js文件,css文件,图片, 文字…

全部统一管理,单独新建static文件夹,css。js。img文件夹保存静态资源.在settings中配置

# 告诉django 静态文件夹的位置
STATICFILES_DIRS = [
    os.path.join(BASE_DIR,'static')
]

在html中通过static标签或者直接写字符串的方式引入进来

直接写路径方式:
<link rel="stylesheet" href="/static/css/mystyle.css">


static标签
{%load static %}
<link rel="stylesheet" href='{%static "css/mystyle.css"%}

代码展示

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!--引入static标签-->
    {%load static%}
    <!--引入外部css文件-->
    <!--第一种方式-->
    <!--<link rel="stylesheet" href="/static/css/mycss.css">-->
    <link rel="stylesheet" href="{%static 'css/mycss.css'%}">
</head>
<body>
<div></div>
<!--<img src="/static/img/1.png" alt="">-->
<img src="{%static 'img/1.png'%}" alt="">
<!--引入外部js文件-->
<!--<script src="/static/js/myjs.js"></script>-->
<script src="{%static 'js/myjs.js'%}"></script>
</body>
</html>
/*static/css/mycss.css*/
 div{
            width: 100px;
            height: 100px;
            background-color: aquamarine;
        }
/*static/js/myjs.js*/
 //点击div更改背景颜色
    var box = document.getElementsByTagName('div')[0];
    box.onclick = function () {
        box.style.backgroundColor = 'pink';
    }
模板常用标签:
if 判断
if elif else
for 循环
for empty
extends 模板继承
block 结合模板继承一起使用,给子文件预留可以更改的区域
load 加载标签,加载自定义过滤器或者标签
include 导入组件标签
static 标签 找静态资源文件夹

模型:orm

对象关系映射
object relational mapping

完成数据库的操作 和数据库打交道 
通过模型类生成数据表
# 1.在models中编写模型类
from django.db import models

# Create your models here.
# 通过orm创建一张表 ---》通过类加上属性对应数据库
class Student(models.Model):
    # 学生表:id (int ,主键)。学生名字,出生日期,学费,状态
    id = models.AutoField(primary_key=True) # id int primary_key auto_increment
    stuName = models.CharField(max_length=64) # stuName varchar(64) not null
    # unique=True 设置唯一
    age = models.IntegerField(default=18) # age int defalult 18
    birthday = models.DateField() # birthday date not null
    # auto_now=True 每次更新数据的时候会更新这个字段,并且会记录最后一次修改的时间,只能在savae方法时触发
    # auto_now_add=True 创建数据的时候会把当前时间添加到数据库
    fee = models.DecimalField(max_digits=7,decimal_places=2) # fee decimal(7,2)
    state = models.BooleanField() #  True保存在数据库中以1保存.False保存0
    sex = models.CharField(max_length=10,default='男')
    
 # 2.在settings中注册子应用
# 已安装的应用
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles','day5','day6'
]
# 在终端中执行
python manage.py makemigrations  # 生成执行文件
python manage.py migrate # 执行迁移文件  生成sql语句发送给mysql

当在模型类中不指定表名的时候,使用默认表名:子应用_模型类类名小写

自己指定表名

# 创建学生类
class Student(models.Model):
  # 学生表:id (int ,主键)。学生名字,出生日期,学费,状态
    id = models.AutoField(primary_key=True) # id int primary_key auto_increment
    stuName = models.CharField(max_length=64) # stuName varchar(64) not null
    # unique=True 设置唯一
    age = models.IntegerField(default=18) # age int defalult 18
    birthday = models.DateField() # birthday date not null
    # auto_now=True 每次更新数据的时候会更新这个字段,并且会记录最后一次修改的时间,只能在savae方法时触发
    # auto_now_add=True 创建数据的时候会把当前时间添加到数据库
    fee = models.DecimalField(max_digits=7,decimal_places=2) # fee decimal(7,2)
    state = models.BooleanField() #  True保存在数据库中以1保存.False保存0
    sex = models.CharField(max_length=10,default='男')
    # 元类
    class Meta:
    #     设置表名
        db_table = 'student'

【注意:每次更改模型类的内容都需要重新执行迁移命令

python manage.py makemigrations  # 生成执行文件
python manage.py migrate # 生成sql语句发送给mysql

流程:通过创建模型类,执行命令,执行生成记录文件,运行文件并且翻译成了sql语句去配置数据库中执行生成表

字段补充参数:

name = models.CharField(,,) 
null=True : 允许为null
blank=True   :可以不传
primary_key=True :设置主键
unique=True :设置唯一
max_length :最大长度限制

关于时间的设置
models.DateField() 
models.DatetimeField()
models.TimeField()
参数:
auto_now_add=True  : 创建数据的时候会把当前时间存入数据库
auto_now = True: 每次更新数据的时候就会更新这个字段,记录最后一次更新时间    

模型类字段类型与mysql字段类型对应关系:

 data_types = {
        'AutoField': 'integer AUTO_INCREMENT',
        'BigAutoField': 'bigint AUTO_INCREMENT',
        'BinaryField': 'longblob',
        'BooleanField': 'bool',
        'CharField': 'varchar(%(max_length)s)',
        'DateField': 'date',
        'DateTimeField': 'datetime(6)',
        'DecimalField': 'numeric(%(max_digits)s, %(decimal_places)s)',
        'DurationField': 'bigint',
        'FileField': 'varchar(%(max_length)s)',
        'FilePathField': 'varchar(%(max_length)s)',
        'FloatField': 'double precision',
        'IntegerField': 'integer',
        'BigIntegerField': 'bigint',
        'IPAddressField': 'char(15)',
        'GenericIPAddressField': 'char(39)',
        'JSONField': 'json',
        'NullBooleanField': 'bool',
        'OneToOneField': 'integer',
        'PositiveBigIntegerField': 'bigint UNSIGNED',
        'PositiveIntegerField': 'integer UNSIGNED',
        'PositiveSmallIntegerField': 'smallint UNSIGNED',
        'SlugField': 'varchar(%(max_length)s)',
        'SmallAutoField': 'smallint AUTO_INCREMENT',
        'SmallIntegerField': 'smallint',
        'TextField': 'longtext',
        'TimeField': 'time(6)',
        'UUIDField': 'char(32)',
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值