Django框架详解

article/2025/7/18 20:20:25

一、MVC框架

1、MVC框架核心思想:

分工和解耦

2、web MVC举例:

以通过浏览器注册用户信息为例:
在这里插入图片描述

  • M:Model,模型, 和数据库进行交互。
  • V:View,视图, 产生html页面。
  • C:Controller,控制器, 接收请求,进行处理,与M和V进行交互,返回应答。

二、MVT框架

Django遵循MVT的思想
在这里插入图片描述

  • M:Model,模型, 和MVC中M功能相同,和数据库进行交互。
  • V:View,视图, 和MVC中C功能相同,接收请求,进行处理,与M和T进行交互,返回应答。
  • T:Template,模板, 和MVC中V功能相同,产生html页面。

三、创建Django项目:

命令:django-admin startproject 项目名
项目目录如下
在这里插入图片描述

  • __init.py: 说明test1是一个python包。
  • settings.py: 项目的配置文件。
  • urls.py: 进行url路由的配置。
  • wsgi.py: web服务器和Django交互的入口。
  • manage.py: 项目的管理文件

四、创建应用

一个项目由很多个应用组成的,每一个应用完成一个功能模块。
命令:python manage.py startapp 应用名
应用目录如下:
在这里插入图片描述

  • init.py: 说明目录是一个Python模块。
  • models.py: 写和数据库项目的内容, 设计模型类。
  • views.py: ,接收请求,进行处理,与M和T进行交互,返回应答。 定义处理函数,视图函数。
  • tests.py: 写测试代码的文件。
  • admin.py: 网站后台管理相关的文件。

五、应用注册:

建立应用和项目之间的联系,需要对应用进行注册。修改settings.py中的INSTALLED_APPS配置项。

六、启动项目:

运行开发web服务器命令:python manage.py runserver

七、模型类:

在这里插入图片描述
在这里插入图片描述

  • O(objects):类和对象。
  • R(Relation):关系,关系数据库中的表格。
  • M(Mapping):映射。
  • django中内嵌了ORM框架,ORM框架可以将类和数据表进行对应起来,只需要通过类和对象就可以对数据表进行操作。
  • 在Django中主要是设计类:模型类。
  • ORM另外一个作用:根据设计的类生成数据库中的表。

1、模型类设计

  • 必须继承与models.Model类。
  • Models.ForeignKey可以建立两个模型类之间一对多的关系,django在生成表的时候,就会在多端的表中创建一列作为外键,建立两个表之间一对多的关系。

2、模型类生成表

(1)生成迁移文件:

  • 命令:python manage.py makemigrations
  • 迁移文件是根据模型类生成的
    在这里插入图片描述
    (2)执行迁移生成表
  • 命令:python mange.py migrate
  • 根据迁移文件生成表。
  • 生成表名的默认格式:应用名_模型类名小写

3、通过模型类操作数据库表

  • 导入模型类:
    (1)from 应用名称.models import 模型类名
  • 向booktest_bookinfo表中插入一条数据。
    (1)b = BookInfo() #定义一个BookInfo类的对象
    (2)b.btitle =‘天龙八部’ #定义b对象的属性并赋值
    (3)b.bpub_date = date(1990,10,11)
    (4)b.save() #才会将数据保存进数据库
  • 查询出booktest_bookinfo表中id为1的数据。
    (1)b = BookInfo.objects.get(id=1)
  • 在上一步的基础上改变b对应图书的出版日期。
    (1)b.bpub_date = date(1989,10,21)
    (2)b.save() #才会更新表格中的数据
  • 紧接上一步,删除b对应的图书的数据。
    (1)b.delete() #才会删除
  • 向booktest_heroInfo表中插入一条数据。
    (1)h = HeroInfo()
    (2)h.hname = ‘郭靖’
    (3)h.hgender = False
    (4)h.hcomment = ‘降龙十八掌’
    (5)b2 = BookInfo.objects.get(id=2)
    (6)h.hbook = b2 # 给关系属性赋值,英雄对象所属的图书对象
    (7)h.save()
  • 查询图书表里面的所有内容。
    (1)BookInfo.objects.all()
    (2)HeroInfo.objects.all()

4、关联操作

在这里插入图片描述

  • 查询出id为2的图书中所有英雄人物的信息。
    b = BookInfo.objects.get(id=2)
    b.heroinfo_set.all() #查询出b图书中所有英雄人物的信息

八、后台管理:

1、本地化

  • 语言和时区的本地化。
  • 修改settings.py文件。

2、创建管理员

  • 命令:python manage.py createsuperuser

3、注册模型类

  • 在应用下的admin.py中注册模型类。
  • 告诉djang框架根据注册的模型类来生成对应表管理页面。
  • b = BookInfo()

4、自定义管理页面

  • 自定义模型管理类。模型管理类就是告诉django在生成的管理页面上显示哪些内容

九、视图

在Django中,通过浏览器去请求一个页面时,使用视图函数来处理这个请求的,视图函数处理之后,要给浏览器返回页面内容。

1、定义视图函数

  • 视图函数定义在views.py中。
  • 例:
def index(request):#进行处理。。。return HttpResponse('hello python')
  • 视图函数必须有一个参数request,进行处理之后,需要返回一个HttpResponse的类对象,hello
    python就是返回给浏览器显示的内容。

2、进行url配置

在这里插入图片描述

  • url配置的目的是让建立url和视图函数的对应关系。url配置项定义在urlpatterns的列表中,每一个配置项都调用url函数。
  • url函数有两个参数,第一个参数是一个正则表达式,第二个是对应的处理动作。
  • 配置url时,有两种语法格式:
  • (1)url(正则表达式,视图函数名)
  • (2)url(正则表达式,include(应用中的urls文件))
  • 工作中在配置url时,首先在项目的urls.py文件中添加配置项时,并不写具体的url和视图函数之间的对应关系,而是包含具体应用的urls.py文件,在应用的urls.py文件中写url和视图函数的对应关系

3、url匹配过程

  • 在项目的urls.py文件中包含具体应用的urls.py文件,应用的urls.py文件中写url和视图函数的对应关系。
    在这里插入图片描述
  • 当用户输入如http://127.0.0.1:8000/aindex时,去除域名和最前面的/,剩下aindex,拿aindex字符串到项目的urls文件中进行匹配,配置成功之后,去除匹配的a字符,那剩下的index字符串继续到应用的urls文件中进行正则匹配,匹配成功之后执行视图函数index,index视图函数返回内容hello
    python给浏览器来显示。

十、模板

1、模板文件的使用

  • 创建模板文件夹
  • 配置模板目录
    在这里插入图片描述
    使用模板文件:
  • (1)加载模板文件
  • 去模板目录下面获取html文件的内容,得到一个模板对象。
  • (2)定义模板上下文
  • 向模板文件传递数据。
  • (3)模板渲染
  • 得到一个标准的html内容。

给模板文件传递数据:

  • 模板变量使用:{{ 模板变量名 }}

  • 模板代码段:{%代码段%}

  • for循环

{% for i in list %}list不为空时执行的逻辑
{% empty %}list为空时执行的逻辑
{% endfor %}

http://chatgpt.dhexx.cn/article/eJKB2TZo.shtml

相关文章

几种数据可视化框架分析

根据下面各个框架本身的特性,以及各自的优缺点,推荐使用D3或者ECharts作为数据可视化的首选框架,某些小特性可以辅用其他小框架实现。具体每个框架的说明和分析如下: D3.js D3是指数据驱动文档(Data-Driven Documents)。D3.js是一…

常见威胁建模框架分析与比较

1 概述 威胁建模的方法最初是为了帮助开发更多的安全的操作系统,但已经开发的大量威胁建模方法,有些只关注软件发展,有些仅涵盖业务或组织的风险和威胁,另有一些可能是技术性的,不同的威胁模型都在基于不同的目的而开…

某商城框架分析

开篇 最近做了一个商城系统,从系统的需求,到系统的选型以及框架和各种技术的研究和使用,我都参与其中,所以,分享一下这个系统. 框架 框架如下: 说明: 表现层 用户分为两种,PC端用户和移动端用户; 其中PC端包括 商城首页,商品类目,购物车,订单,商品展示,会员中心等…

Cgroup框架分析

cgroups概念扫盲 关于cgroups本文主要分析的是cgroups整体框架,不涉及对各个子系统的介绍和cgroupsfs的介绍,在分析cgroup整体框架的时候,首先我们需要对cgroups中的一些概念有所深刻认识,只有在这个基础上,才能明白为…

音视频常见播放器框架分析

音视频面试必问:如何设计一个播放器 1.常见播放器框架分析 2.如何解决播放端延迟的问题 3.音视频如何做同步 4.快进、快退、逐帧播放如何实现 音视频开发技术精讲《常见播放器框架分析》 播放器框架 SDL2播放音频 使用SDL播放解码后的音频数据,SDL播放…

商业分析经典框架

商业分析经典框架 文章目录 商业分析经典框架1.行业怎么盈利现状分析PEST分析产业链分析 2.行业里谁在挣钱竞争分析标杆公司分析竞争格局分析细分机会分析 3.企业还能盈利么发展分析商业化模式演变新技术/产品新用户新市场 总结 1.行业怎么盈利 现状分析 PEST分析 这个行业在…

Linux内核4.14版本——alsa框架分析(1)—alsa简介

目录 一,ALSA声音编程介绍 二,ALSA历史 三,数字音频基础 四,ALSA基础 五,ALSA体系结构 六,设备命名 七,声音缓存和数据传输 八,Over and Under Run 九,一个典型…

sFuzz源代码框架分析

sFuzz是发表在软件工程顶会ICSE2020年论文(sFuzz:An Efficient Adaptive Fuzzer for Solidity Smart Contracts)中实现的工具。sFuzz通过基于距离的启发式策略的模糊测试技术实现对合约漏洞检测。 sFuzz基于C实现,集成了以太坊和模…

Linux V4L2 框架分析

背景 Read the fucking source code! --By 鲁迅A picture is worth a thousand words. --By 高尔基 说明: Kernel版本:4.14ARM64处理器,Contex-A53,双核使用工具:Source Insight 3.5, Visio 1. 概述 V…

IM即时通讯项目框架分析

1 IM即时通讯项目框架分析和部署 1. 即时通讯框架分析和部署 2. 登录服务器和消息服务器设计 3. 路由服务器设计 4. 数据库代理服务器设计 5. 文件服务器和docker部署 6. 性能测试和k8s上云发布 1.1 即时通讯应用场景 即时通讯技术应用非常广泛,涉及教育、电商、金融、…

框架分析--框架驱动

使用pomelo开发应用时,我们一直关注的是给框架填入相应的回调,给app配置一些上下文。而没有太多关心整个框架的驱动力量。 在我们启动应用的时候,我们会在game-server目录下执行pomelo start,然后就能看到很多log信息,…

二、小程序框架分析

2.1小程序框架 2.1.1基本框架 1)逻辑层 用来处理业务逻辑 JavaScript 2)视图层 用来渲染页面 视图层描述语言WXML 视图样式WXSS 2.1.2目录结构 1)框架全局文件 ①app.js 定义全局数据和函数的使用 指定微信小程序的生命周期函数 onLa…

多属性决策模型 matlab代码及例子

多属性决策模型 通过层次分析模型得到的 权重与属性值相乘 再找最优 层次分析方法 请看上篇博客层次分析法 例子然后各项指标的重要性创建比较矩阵,通过层次分析法得到各权重。 利用各项指标权值与每个公司对应数据相乘再相加得到的总值对比。

多属性决策模型

多属性决策模型 一、多属性决策模型(1)特点(2)属性值的归一化①效益型②成本型③固定型④偏离型⑤区间型⑥偏离区间型 二、例题及步骤①建立数学模型②属性值归一化③对不同的属性构建成对比较矩阵并计算属性权重④计算每个公司的…

数学建模 02多属性决策 归一化处理

多属性决策 什么是多属性决策 它指的是利用已有的决策信息通过移动的方式对一组(有限个)备选方案进行排序或者择优。它的主要组成部分有如下2种: 1、获取决策信息:属性权重和属性值(实数、区间数和语言)…

基于离差最大化的多属性决策方法及matlab应用

1.基于离差最大化的多属性决策方法 若所有方案在属性uj下的属性值差异越小,则说明属性对方案决策所起的作用越小;反之越重要。从对方案进行排序的角度考虑,方案属性值偏差越大的属性应该赋予较大的权重。 步骤1 对于多属性决策问题,构造决策矩阵A,并利用适当方法规范化处…

多属性决策的权重确定方法及matlab 程序

本文介绍11种多属性决策权重确定方法及matlab 程序。 1.列和求逆归一化方法(NHM) 1 2.行和归一化方法(NRA) 1 3.和积法(ANC) 1 4.方根法(NGM) 1 5. 特征向量法(EM) 2 6.上三角梯度特征向量法HGEM 2 7.下三角梯度特征向量法LGEM 2 8.综合梯度特征向量法HLGEM 2 9.加权最…

数学建模 多属性决策模型

转载博客来自:https://blog.csdn.net/zxiang248/article/details/72828742 多属性决策介绍 多属性决策是现代决策科学的一个重要组成部分,它的理论和方法在工程设计、经济、管理和军事等诸多领域中有着广泛的应用,如:投资决策、…

数模(2)——多属性决策模型

原创为b站视频:https://www.bilibili.com/video/av20238704 定义: 利用已有的决策信息通过一定的方式对一组备选方案进行排序或择优。 步骤: (1)获取决策信息:属性权重和属性值 (2&#xf…

数学建模02 —— 多属性决策模型

一、引言 在工程设计、经济、管理和军事等诸多领域中有着广泛的应用。比如:投资决策、项目评估、产业部门发展排序和经济效益综合评价等等。 二、实质 利用已有的决策信息通过一定的方式对一组(有限个)备选方案进行排序或择优。 两部分组成…