django☞记忆点

阅读量: zyh 2020-05-03 13:33:44
Categories: > Tags:

.git文件

# Django #
*.log
*.pot
*.pyc
__pycache__
media
static

# Backup files #
*.bak

# other
.vscode
.git
db
log

Dockerfile

FROM python:3.8-alpine
LABEL maintainer="[email protected]"
WORKDIR /app 
COPY . /app
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories && \
    apk update && \
    apk add gcc musl-dev jpeg-dev zlib-dev freetype-dev lcms2-dev openjpeg-dev tiff-dev tk-dev tcl-dev libffi-dev openssl-dev && \
    pip install --upgrade pip && pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
CMD ["sh","/app/start.sh"]

生成 settings.SECRET_KEY

#!/usr/bin/env python
# coding=utf-8
from django.core.management.utils import  get_random_secret_key
print("务必妥善保管好此密码")
print(get_random_secret_key())

调用 fontawesome-free 图标库

pip install fontawesome-free

settings.INSTALLED_APPS 中加入fontawesome-free

外键

外键,顾名思义不是自己的字段,而是引用其它表的字段。

外键不是通过字段名定义的,而是通过【外键约束】定义

外键可以实现一对多、多对多和一对一的关系。

外键既可以通过数据库来约束,也可以不设置约束,仅依靠应用程序的逻辑来保证。

学生表【student】有主键【sid】,成绩表也有主键【sid】, 学生表和成绩表是1对1的关系

image-20210716114155366

如果没有【外键约束】的规则建立,则两个表在数据库看来是没有关系的,即:要保持两个表的关系,则需要应用程序去保证逻辑正确,也就是说,应用程序不能插入相同学号的数据到表里。

若应用程序不想去维持,则就需要数据库【外键约束】去维持。

在没有django的时候,你需要直接写入SQL语句去实现【外键约束】,例如

ALTER TABLE scores
ADD CONSTRAINT fk_student_sid
FOREIGN KEY (student_sid)
REFERENCES student (sid);

django创建外键约束的方式如下,成绩表的【sid】字段定义如下

sid = models.OneToOneField('student', null=True, on_delete=models.CASCADE)

一对一 models.OneToOneField()

常用于“扩展”另一个模型的主键,就如同上述例子,扩展了学生的额外属性【成绩】

一对多 models.ForeignKey()

常用于A包含B,外键定义在B表中,引用A表的主键

多对多 ManyToManyField()

你中有我,我中有你,一个班有多个老师,一个老师可以教多个班

查询

on_delete

字面意思,当删除的时候,应该怎么做

CASCADE:删除