django与数据库

61 阅读1分钟

请求与响应

  • request是一个对象,封装了用户发送过来的所有相关数据

    • request.method 获取请求方式
    • request.GET 在url上传递值
    • request.POST 在请求体中提交数据
    • Httpqesponse() 字符串内容返回给请求者
    • render(request, 'xx.html',{"xx":"xx"}) 读取html内容,将字符串替换内容
    • redirect("url地址") 让浏览器定位到其他页面
  • {% csrf_token%}安全验证

截屏2023-09-09 22.23.22.png

连接Mysql(ORM框架)

安装第三方模块 pip install mysqlclient

ORM

  • 启动Mysql服务,创建数据库
  • 用settings.py在Django连接数据库 截屏2023-09-09 22.34.07.png
  • django操作表在models.py中
from django.db import models

class UserInfo(models.Model):  #创建类
    id = models.BigAutoField(verbose_name="ID",primary_key=True)
    name = models.CharField(max_length=32)
    password = models.CharField(max_length=64)
    age = models.IntegerField()
  • 提交数据库内容: python3.11 manage.py makemigrations python3.11 manage.py migrate

修改列时:要么设置默认值defalut=?,要么选择1然后手动填充值,要么设置null=True,blank=True

增删改查命令

  • 在表中新建添加数据 (insert into app01_department (title) values ("销售部"))

    • 在views.py中先导入app中的models
    • Dapartment.objects.create(title="销售部")
  • 删除数据

    • UserInfo.objects.filter(id=3).delete() 筛选id=3的删掉
    • UserInfo.objects.all.delete()
  • 获取数据

    • data_list = [对象,对象,对象] QuerySet类型
    • data_list = UserInfo.objects.all()
    • data_list = UserInfo.objects.filter(id=3).first() 获取一行数据,first()获取第一条数据
    for obj in data_list:
        print(obj.jd,obj.name)
        ```
    
  • 修改数据

    • data_list = UserInfo.objects.all().update(age=999)

数据库表结构

  • decimal 准确的小数值
    • account = models.DecimalField(verbose_name="余额",max_digits=18,decimal_places=2) max_digits是最大数字总个数,decimal_places是小数位占2
    • id = models.BigAutoField(verbose_name="ID",primary_key=True) BigAutoField数字递增,verbose_name是注释名,AutoField是整数型
    • depart = models.ForeignKey(to="Department",to_field="id",on_delete=models.CASCADE) to表示与哪张表关联,to_field表示与表中哪一列关联,CASCADE表示级联删除
    • depart = models.ForeignKey(to="Department",to_field="id",null=True,on_delete=models.SET_NULL)置空
    • gender_choices = ( (1,"男"),(2,"女"), )``gender = models.SmallIntegerField(verbose_name="性别",choices=gender_choices) SmallIntegerField小整型,choice做约束

案例:用户管理

截屏2023-09-11 14.38.09.png

截屏2023-09-11 14.43.16.png

截屏2023-09-11 14.46.07.png

截屏2023-09-11 14.48.36.png