当前位置: 首页 > news >正文

django5个人笔记

django概述

django一开始是做新闻网站的主要是为了提高开发效率主要是实现简单快捷的网站开发,下面我们聊聊它的设计原理。

MTV架构(Model,template,view即模型,模板视图)

1.model

定义数据库结构和数据库交互,基本数据库配置写在setting.py里面
每个模型都是一个 Python 的类,这些类继承 django.db.models.Model
每个模型对应一张数据表通过djangoORM进行抽象访问
其中再model文件里
一个模型类 = 一张表
一个类属性(字段) = 表里的一个列
一条模型实例 = 表里的一行记录

比如我们构建一个简易的user模型

#app名/models.py
form django.db import models
class User(model.Model):username = models.CharField("用户名",max_length=150,unique= True)email = models.EmailField("用户名",max_length=150,unique=True)age = models.PositiveSmailIntegeried('年龄',null = True)join_at = models.DataTimeField('注册时间',auto_now_add=True)class Meta:db_table = "tb_users"ordering = ['-join_at']verbose_name = '用户'verbose_name_plural ="用户"def _str(self):return self.username

我们执行
python manage.py makemigrations #生成迁移文件
python manage.py migrate #应用迁移
后就会生成一张表

FieldTypeNullKeyDefaultExtra
idint(10) unsignedNOPRINULLauto_increment
usernamevarchar(150)NOUNINULL
emailvarchar(254)YESNULL
agesmallint(5)YESNULL
join_atdatetime(6)

注意
你没写 id 字段,Django 会自动给你加主键自增字段,除非自己指定 primary_key=True。
字段类型与真正数据库类型的映射由“路由”决定(MySQL、PostgreSQL、SQLite 各不相同)

常用字段类型和常用参数

场景推荐字段关键参数
字符串CharField / TextFieldmax_length(CharField 必须)、db_index、choices
整数IntegerField / PositiveIntegerField / BigAutoFielddefault、validators
小数DecimalField(max_digits, decimal_places)金额、汇率必备
真假BooleanFieldnull 别用,老版本有坑
时间DateTimeField / DateField / TimeFieldauto_now(更新时自动变)、auto_now_add(创建时自动变)
文件FileField / ImageFieldupload_to、storage(可接 OSS/S3)
枚举IntegerField + choices比字符串省空间,可全球统一
JSONJSONField(Django 3.1+ 内置)存结构化扩展字段,PostgreSQL 原生,MySQL 5.7+ 也支持

通用字段参数:
null=True # 数据库层面允许 NULL
blank=True # 表单层面允许空
db_index=True # 给该列建普通索引
unique=True / together_unique=(“f1”,“f2”) # 唯一约束
default / choices / validators / help_text / editable / verbose_name

模型层 CRUD 接口(增删改查操作)

我们先笼统讲一下模型层 CRUD 接口
Django 5 的“模型层 CRUD 接口”就是:
在 Django 5 的 ORM 框架里,每个模型类(继承自 models.Model)自带的 objects 管理器所提供的一整套“增删改查”方法集合。开发者直接调用这些 Python 方法即可完成对数据库表的 CRUD 操作,而不需要手写 SQL。

u = User.object.create(username='alice',email = 'alice@ex.com')
#或者
u = User(username='alice',email="alice@ex.com")
u.save()
# 链式过滤器(惰性,真正用到数据才发 SQL)
qs = User.objects.filter(age__gte=18).exclude(email="").order_by("-join_at")
for u in qs:print(u.username, u.email)# 常用查询运算符
# __exact  __iexact  __contains  __icontains  __startswith  __gt  __gte  __lt  __lte  __range  __in  __isnull
# 时间字段还有 __year  __month  __day  __hour ...# 只拿一条
try:u = User.objects.get(username="alice")
except User.DoesNotExist:...
#单条改
u.age = 19
u.sava()
#批量改
user.objects.filter(age__isnull=True).update(age=0)
u.delete()#单条
User.objects.filter(spam=true).delete()#批量

Template(模板)


文章转载自:

http://XTPDF9QZ.pbkyf.cn
http://qnIro7nd.pbkyf.cn
http://JayayUVS.pbkyf.cn
http://5sJLCega.pbkyf.cn
http://b84DnZsW.pbkyf.cn
http://BCMvsPzp.pbkyf.cn
http://EKAm6lrf.pbkyf.cn
http://2sXj5K0L.pbkyf.cn
http://IaiDKQxa.pbkyf.cn
http://MQKJiGJ4.pbkyf.cn
http://SjEiTIUl.pbkyf.cn
http://iGDZfUvB.pbkyf.cn
http://0cmwiIsD.pbkyf.cn
http://86JWZby8.pbkyf.cn
http://AXX5TD8a.pbkyf.cn
http://HWX04kcZ.pbkyf.cn
http://vYkdhkE4.pbkyf.cn
http://25iCl65Z.pbkyf.cn
http://VfLrjqyg.pbkyf.cn
http://vWn6emWy.pbkyf.cn
http://LoDcqKCL.pbkyf.cn
http://hg3rzm0t.pbkyf.cn
http://lV97A8El.pbkyf.cn
http://XrBvfJri.pbkyf.cn
http://x1gtu00j.pbkyf.cn
http://ogAaNcXc.pbkyf.cn
http://X7oAr97h.pbkyf.cn
http://bZpZonoV.pbkyf.cn
http://mrA0t1No.pbkyf.cn
http://prOPGQAt.pbkyf.cn
http://www.dtcms.com/a/373660.html

相关文章:

  • Linux 进程信号之信号的保存
  • 详细讲解锥齿轮丝杆升降机的加工制造工艺
  • nginx配置前端请求转发到指定的后端ip
  • 【Linux】文件管理:压缩、归档与传输
  • 大数据各组件flume,datax,presto,DolphinScheduler,findBI在大数据数仓架构中的作用和功能。
  • 算法之常见八大排序
  • 某公共资源中心-sm2逆向
  • 数电实验二任务验证指南(开关操作与指示灯观察)
  • Redis Stream:轻量级消息队列深度解析
  • RAG-5-案例1
  • 点亮智慧城市:智能照明开关驱动器如何重塑路灯控制新纪元
  • 开发中使用——鸿蒙播放本地mp3文件
  • DLL修复是什么意思?为什么总会缺失?(详细教程)
  • 高强度应用下天硕工业级SSD固态硬盘真的更耐用吗?
  • c++基础学习(学习蓝桥杯 ros2有C基础可看)
  • SpringBoot学习日记 Day10:企业级博客系统开发实战(一)
  • 嵌入式学习---(硬件)
  • 写算法第二题(英语介词)dom对象
  • cn2an:中文数字与阿拉伯数字的智能转换工具
  • Hive和Flink数据倾斜问题
  • 嵌入式ARM架构学习2——汇编
  • 渗透测试全景解析:从基础概念到实战演练
  • 鸿蒙Next应用UI稳定性故障调试:从崩溃到流畅的实战指南
  • 企智汇施工工程项目管理系统:全生命周期信息化管理解决方案!施工企业管理系统!施工企业项目管理软件!工程项目管理系统!工程项目管理软件!
  • 遥感数据同化方法:集合卡尔曼滤波和变分同化算法
  • mac安装Java开发环境
  • Java网络初识(2):IP地址和端口号,协议,五元组
  • 什么是算法:高效解决问题的逻辑框架
  • EFCore与EF6:ORM技术深度解析
  • 【开题答辩全过程】以 线上“三味书屋”学习平台设计与实现为例,包含答辩的问题和答案