1 创建并注册app;
# (1)创建app,即在pycharm的终端执行下面的语句
python manage.py startapp app01
# (2)注册app,即在setting.py中的INSTALLED_APPS中注册:
'app01.apps.App01Config'
2 利用orm来设计表结构
# 在app中的models.py创建类,以下是相应的代码:
class Department(models.Model): """部门表,这里补充一下ID,事实上orm的 *** 作默认给出id是长整型和主键了""" # verbose_name是一个注解,增加可读性。方便维护人员阅读title是什么含义,可写可不写。 # CharField(max_length=32)相当于varchar(32) id = models.BigAutoField(verbose_name=32, primary_key=True) title = models.CharField(verbose_name="标题", max_length=32)class UserInfo(models.Model): """员工表""" # DecimalField(max_digits=10, decimal_places=2, default=0)意思应该是说,最大的数字位数是10位(是包括小数位的),小数点的话是精确到后两位,也就是0.01。---最好验证下 # DataTimeField()是时间类型了,对应mysql中的datetime name = models.CharField(verbose_name="员工姓名", max_length=16) password = models.CharField(verbose_name="密码", max_length=32) age = models.IntegerField(verbose_name="年龄") account = models.DecimalField(verbose_name="账户余额", max_digits=10, decimal_places=2, default=0) create_time = models.DateTimeField(verbose_name="入职时间") # 所属部门---这里是有约束的,也就是已存在部门,可以理解是部门表, # to是指向外键所在的表,to_field是要关联指向表中的哪一列,如下是id所属列 # 之后,Django会自动给depart补上_id,也就是depart_id。因此我们可以不写_id。 depart = models.ForeignKey(to="Department", to_field="id") # 后面的补充 depart = models.ForeignKey(to="Department", to_field="id", on_delete=models.CASCADE) # django中给的约束,就是给出一个性别元组的映射关系,接着直接给出choice属性等于该元组,那么就可以自动约束了。 gender_chioce = ( (1, "男"), (2, "女") ) gender = models.SmallIntegerField(verbose_name="性别", choices=gender_chioce)"""
上述的depart语句是有问题的,这里存在问题就是当部门表中删掉了某个部门后,那么用户表中与被删部门相关的用户该怎么处理,是一并删除还是另外处置?因而下面给出解决方法:
(1)级联删除法。就是把属于被删部门的用户直接删掉。那么应该这样修改,也就是补上on_delete的值。
depart = models.ForeignKey(to="Department", to_field="id", on_delete=models.CASCADE)
(2)置空 *** 作。也就是把被删部门的用户的部门id置空,那么需要同时给出depart是允许为空的,on_delete就置为models.SET_NULL。
depart = models.ForeignKey(to="Department", to_field="id", null=True, blank=True, on_delete=models.SET_NULL)
"""
3 在cmd中创建数据库
# 建库命令,默认是utf-8的编码类型。COLLATE utf8_general_ci是数据库校对规则。ci是case insensitive的缩写,意思是大小写不敏感;相对的是cs,即case sensitive,大小写敏感;还有一种是utf8_bin,是将字符串中的每一个字符用二进制数据存储,区分大小写。
create database UserInfo default charset utf8 COLLATE utf8_general_ci;
4 在setting.py中修改数据库配置,链接mysql
DATAbaseS = { # 'default': { # 'ENGINE': 'django.db.backends.sqlite3', # 'NAME': base_DIR / 'db.sqlite3', # } 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'userinfo', 'USER': 'root', 'PASSWORD': '123456', 'HOST': 'localhost', 'PORT': 3306, } }
5 然后执行迁移数据库命令
python manage.py makemigrations
python manage.py migrate
6 另外配置一下静态文件,一般是开源的框架或者图片等,如css/js/plugins/img。就是放在app01下面。
7 从数据库中获取部门列表
# 进入app01中的view.py中,导入models.py的类
from app01 import models
# 定义 *** 作函数:
def depart_list(request):
"""部门表"""
queryset = models.Department.objects.all()
# 2 将返回的查询集合传到相应的html页面中。
return render(request, 'depart_list.html', {"queryset": queryset})
8 前端页面渲染数据
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)