案例:员工管理系统
创建项目
- 删除pycharm自动增加的
- 删除templates文件
创建app
两种方式创建app,可以在pycharm的终端输入,也可以先pycharm帮助执行一个manage.py
- 终端输入
python manage.py startapp app01
- 使用pycharm
- 相当于pycharm帮助执行了一个manage.py
- 直接输入
startapp <文件名>
即可创建
注册app
- 在
settings.py
中注册app
设计表结构
- 新建用户表
- 新建部门表
- 将用户表和部门表进行关联
from django.db import models
class Department(models.Model):
"""部门表"""
# id = models.BigAutoField(verbose_name="ID", primary_key=True)
title = models.CharField(verbose_name='标题', max_length=32)
class UserInfo(models.Model):
"""员工表"""
name = models.CharField(verbose_name="姓名", max_length=16)
password = models.CharField(verbose_name="密码", max_length=64)
age = models.IntegerField(verbose_name="年龄")
account = models.DecimalField(verbose_name="账户余额", max_digits=10, decimal_places=2, default=0)
create_time = models.DateTimeField(verbose_name="入职时间")
# 无约束
# depart_id = models.BigIntegerField(verbose_name="部门ID")
# 部门删除,部门id列置空
# depart_id = models.ForeignKey(to="Department", to_fields="id",null=True, blank=True, on_delete=models.SET_NULL)
# (对部门id进行约束) to 与那张表关联 to_fields 表中哪一列有关联, 级联删除此行
depart_id = models.ForeignKey(to="Department", to_fields="id", on_delete=models.CASCADE)
gender_choices = (
(1, "男"),
(2, "女")
)
gender = models.SmallIntegerField(verbose_name="性别",choices=gender_choices)
在MySQL中生成表
- 工具连接MySQL生成数据库
create database djtest;
- 修改
settings.py
数据库配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'djtest',
'USER': 'root',
'PASSWORD': 'root',
'HOST': '127.0.0.1',
'PORT': 3306
}
}
- 基于django命令生成数据库的表
命令行执行
python manage.py makemigrations
python manage.py migrate
manage.py中执行
makemigrations
migrate
- 进入数据库查看
静态文件管理
- 放入文件