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