python-web应用程序-Django数据库-数据库表设计

python-web应用程序-Django数据库-数据库表设计

在models中创建一个类会自动对数据库进行管理,那么如何用类的声明来实现数据库表的设计呢?

from django.db import models

# Create your models here.
class Department(models.Model):
    title = models.CharField(verbose_name='部门名称',max_length=20)



class UserInfo(models.Model):
    name = models.CharField(verbose_name='姓名',max_length=10)
    password = models.CharField(verbose_name='密码',max_length=20)
    age = models.IntegerField(verbose_name='年龄')
    account = models.DecimalField(verbose_name='账户余额',max_digits=10,decimal_places=2,default=0)
    crate_time = models.DateTimeField(verbose_name="入职时间")

    #无约束
    depart_id = models.BigIntegerField(verbose_name='部门id')
    """1.有约束
        - to ,与那张表关联
        - to_field ,表中的那一字段关联
       2.Django自动
        - 写的dapart
        - 生成数据列 depart_id
       3.部门表被删除时
        - 级联删除
            dapart = models.ForeignKey(to='Department',to_field='id',on_delete=models.CASCADE)
        - 置空
            dapart = models.ForeignKey(to='Department',to_field='id',null=True,blank=True,on_delete=models.SET_NULL)
    
        以上均是在数据库中的约束
    """

    dapart = models.ForeignKey(to='Department',to_field='id',null=True,blank=True,on_delete=models.SET_NULL)


    #在django中做出约束
    gender_choices = (
        (1,'男'),
        (2,'女')
    )
    gender = models.SmallIntegerField(verbose_name='性别',choices=gender_choices)

Django连接数据库

1.创建数据库

create database pymysql DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

2.在Django中配置数据库

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'pymysql',	#数据库名称
        'USER':'root',
        'PASSWORD':'123456',
        'HOST':'127.0.0.1',
        'PORT':'3306'
    }
}

3.根据models中的类自动生成表结构命令

python manage.py makemigrations
python manage.py migrate

也可点击-tools - run manage.py TASK

makemigrations
migrate

部门管理

用最原始的方法做

后续使用Django中提供的Form和ModelForm组件更方便

1.参数传递

前端:

href="/depart/{{ obj.id }}/edit/

urls.py中:

path('depart/<int:nid>/edit/',views.depart_edit)
#<int:nid>:正则表达式,相当于占位符,该位置传递的是nid 的参数。

view.py中

def depart_edit(request,nid):
'''部门'''
#根据nid,获取他的数据[obj,]
row_object = models.Department.objects.filter(id=nid).first()

return render(request,'depart_edit.htnl'{"row_object": row_object})

2.模版的继承

对于前端高度重复的部分,可以使用模版继承将不变的继承下来,变化的重写即可

  • 创建一个前端模版layout.html

  • 在需要变化的地方加上

    {% block content %}
    {% endblock %}
    
  • 使用模版,创建一个test.html

    {% extends 'layout.html' %}
    
    {% block content %}
    
    
    {% endblock %}
    

    layout.html:

    <! DOCTYPE html><html lang="en "><head>
    <meta charset="UTF-8"><title>Title</title></ head>
    {% block css %}
    
    {% endblock % }
    
    <body>
    <h1>标题</h1>
    <div>
    {% block content %}
    
    {% endblock % }
    </div>
    <h1>底部</h1></ body>
        
    {% block js %}
    
    {% endblock % }
    </ htm1>
    

    继承模版

    {%  extends 'layout.html' %}
    {% block css %}
    XXXXXX
    {% endblock % }
    
    
    {% block content %}
    
    XXXXXXX
    
    {% endblock %}
    
    
    {% block js %}
    XXXXXXXX
    {% endblock % }
    

相关推荐

  1. python-web应用程序-Django数据库-数据库设计

    2024-06-07 20:56:03       34 阅读
  2. Web框架开发-Django-数据库的单查询

    2024-06-07 20:56:03       39 阅读
  3. python-web应用程序-Django-From组件

    2024-06-07 20:56:03       32 阅读
  4. Python Django 5 Web应用开发实战

    2024-06-07 20:56:03       29 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-07 20:56:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-07 20:56:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-06-07 20:56:03       87 阅读
  4. Python语言-面向对象

    2024-06-07 20:56:03       96 阅读

热门阅读

  1. 人类的深度学习与机器的深度学习不同

    2024-06-07 20:56:03       34 阅读
  2. 机器学习笔记——欠拟合、过拟合

    2024-06-07 20:56:03       29 阅读
  3. 鸿蒙系统和MIUI之类的系统有何区别?

    2024-06-07 20:56:03       22 阅读
  4. 机器学习ML.NET

    2024-06-07 20:56:03       25 阅读
  5. 在Linux/Ubuntu/Debian中使用lshw查看系统信息

    2024-06-07 20:56:03       35 阅读
  6. C++之动态数组

    2024-06-07 20:56:03       32 阅读
  7. vue3开发时,热更新页面的生命周期

    2024-06-07 20:56:03       30 阅读
  8. mysql GROUP BY 语句报错处理

    2024-06-07 20:56:03       27 阅读
  9. 浅谈Qt:跨平台开发的现在与未来

    2024-06-07 20:56:03       31 阅读