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

广告制作网站源码高端网站设计公司

广告制作网站源码,高端网站设计公司,网站开发的原理,周口规划建设局网站django概述 django一开始是做新闻网站的主要是为了提高开发效率主要是实现简单快捷的网站开发,下面我们聊聊它的设计原理。 MTV架构(Model,template,view即模型,模板视图) 1.model 定义数据库结构和数据库交…

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://www.dtcms.com/a/494948.html

相关文章:

  • cpp-stub工作原理详细举例解析
  • 香港服务器CPU中E5和Gold的区别
  • linux shell编程实战 02 变量与交互式输入
  • 网站下载怎么做如何建一个免费试用网站
  • 【LeetCode热题100(45/100)】二叉树展开为链表
  • VUE封装axios调用
  • python的scikit-image库的功能介绍(亲测)
  • 做go分析的网站第一成品网站超市
  • ArrayList和LinkedList的区别
  • PinWin,一个窗口置顶工具
  • 一键式搜索引擎Hacking工具
  • CasADi:高性能数值优化与自动微分工具库详解
  • 中英文网站建设企业网站列表设计
  • 在 iOS 18 中,控制中心怎样添加应用快捷方式?
  • C++类型转换
  • 【Memory协议栈】Autosar架构下如何加速Fee的切页时间
  • 【C# MVC 前置】异步编程 async/await:从 “卡界面” 到 “秒响应” 的 Action 优化指南(附微软官方避坑清单)
  • WRF-Chem模式编译,排放源制作
  • 网站管理和维护云服务器多少钱一台
  • 做外贸网站效果好吗万网首页
  • JavaWeb前端-Ajax
  • ip rule 策略路由
  • 【Zephyr电源与功耗专题】15_功耗优化测试工具与手段
  • 如何让多模态大模型学会“自动思考”-R-4B训练框架核心设计与训练方法
  • 上海企业网站备案找个网站这么难2021
  • 利用层序遍历建树和打印
  • 分布式专题——47 ElasticSearch搜索相关性详解
  • php 免费企业网站有没有傻瓜式建设网站
  • BeanDefinition 详解
  • 网站开发培训实训设计网站官网狗