• Django员工管理系统


    通过Django设计一个员工管理系统,练习Django项目的创建。通过学习B站武沛齐老师视频制作。很基础的知识,仅供自己记录学习,大神勿喷,谢谢。

    环境:python 3.8,Django 3.2.16

    一、通过pycharm创建新项目后需要注意的操作

    1、在settings.py中删除默认模板的路径:

     2、删除templates模板文件夹,等创建了新APP,在新APP中创建模板文件目录和静态文件目录。后面会提到。

    二、创建APP

    1、方法一:

    python mamage.py startapp app01(app01为项目名)

    2、方法二:

    还可以通过pycharm-tools-run manage.py task调出调试窗口,pycharm自动执行了python manage.py,可以在这个创空中执行创建APP的命令:startapp app01

    3、在settings.py中进行app01的注册:

    1. INSTALLED_APPS = [
    2. 'app01.apps.App01Config'
    3. ]

    三、设计表结构

    项目启动前,设计表结构,在models.py中设计表

    1、设计一个部门表

    1. class Department(models.Model):
    2. '''部门表'''
    3. title = models.CharField(verbose_name="标题",max_length=32)

    2、需要注意的一些事项:级联删除和置空

    这里关联部门表,要进行约束,只能是部门表中已经存在的ID,这样写没有约束
    depart_id = models.BigIntegerField(verbose_name="部门ID")
    
    有约束的写法: to,表示与哪个表关联,to_field表示与哪个列进行关联
    django的自动操作,会在mysql中会自动将depart,生成depart_id,这个名字作为表格的内部名字
    
    如果部门删除了,关联的用户怎么处理:一种是删除用户,级联删除:on_delete=models.CASCADE();
    depart = models.ForeignKey(to="Department",to_field="id",on_delete=models.CASCADE())
    
    一种是设置为空值,前提是这一列的值允许为空:null = True,blank = True
    depart =models.ForeignKey(to="Department",null=True,blank=True,on_delete=models.SET_NULL())
    1. class UserInfo(models.Model):
    2. '''员工表'''
    3. name = models.CharField(verbose_name="姓名",max_length=16)
    4. password = models.CharField(verbose_name="密码",max_length=64)
    5. age = models.IntegerField(verbose_name="年龄")
    6. #最长10位,小数位2位,默认是0
    7. account = models.DecimalField(verbose_name="账号余额",max_digits=10,decimal_places=2,default=0)
    8. creat_tiem = models.DateTimeField(verbose_name="入职时间")
    9. #这里要关联部门表,要进行约束,只能是部门表中已经存在的ID,这样写无约束
    10. #depart_id = models.BigIntegerField(verbose_name="部门ID")
    11. #有约束的写法: to,表示与哪个表关联,to_field表示与哪个列进行关联
    12. #django的自动操作,会在mysql中会自动将depart,生成depart_id,这个名字作为表格的内部名字
    13. #如果部门删除了,关联的用户怎么处理:一种是删除用户,级联删除:on_delete=models.CASCADE();
    14. depart = models.ForeignKey(to="Department",to_field="id",on_delete=models.CASCADE())
    15. #一种是设置为空值,前提是这一列的值允许为空:null = True,blank = True
    16. #depart = models.ForeignKey(to="Department",null=True,blank=True,on_delete=models.SET_NULL())

    四、创建数据库并连接

    1、创建mysql数据库;

    2、在settings.py中修改数据库的配置;

    1. DATABASES = {
    2. 'default': {
    3. 'ENGINE': 'django.db.backends.mysql',
    4. 'NAME': 'wang', #数据库名字
    5. 'USER':'root', #用户名
    6. 'PASSWORD':'123456', #密码
    7. 'HOST':'123.56.200.1XX', #数据库地址
    8. 'PORT':3306, #端口
    9. }
    10. }

    3、数据库迁移;

    可以通过pycharm -tools- run mamge.py task,打开调试窗口,输入如下命令:

    makemigrations;

    migrate;

    五、静态文件管理

    1、在新创建的APP中创建static文件夹;

    2、在新创建的APP中创建templates文件夹;

    六、Django项目多APP的路由分发

    1、路由简单的来说就是根据用户请求的 URL 链接来判断对应的处理程序,并返回处理结果,也就是 URL 与 Django 的视图建立映射关系。Django 路由在 urls.py 配置,urls.py 中的每一条配置对应相应的处理方法。

    2、路由分发(include)

    存在问题:Django 项目里多个app目录共用一个 urls 容易造成混淆,后期维护也不方便。

    解决:使用路由分发(include),让每个app目录都单独拥有自己的 urls。

    步骤:

    • 1、在每个 app 目录里都创建一个 urls.py 文件。
    • 2、在项目名称目录下的 urls 文件里,统一将路径分发给各个 app 目录。
      1. #项目目录下urls中
      2. from django.urls import path,include
      3. urlpatterns = [
      4. path("app01/", include("app01.urls")),
      1. #APP中的urls
      2. from django.urls import path
      3. from app01 import views
      4. urlpatterns = [
      5. path('log/',views.content),

  • 相关阅读:
    驱动开发:PE导出函数与RVA转换
    Redis主从、哨兵、 Cluster集群一锅端!
    gRpc入门
    云游戏| 云计算推动游戏行业进入“新纪元”
    从零开始的Hadoop学习(六)| HDFS读写流程、NN和2NN工作机制、DataNode工作机制
    DANAHER S21260-SRS伺服驱动器模块
    map 模拟与用法
    简单地聊一聊Spring Boot的构架
    电脑开不了机怎么办?三招帮你成功解决!
    Python unicode编码转中文
  • 原文地址:https://blog.csdn.net/weixin_47401101/article/details/127277515