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

11.28 知识回顾(Web框架、路由控制、视图层)

一、 web 框架

    1.1 web框架是什么?

别人帮咱们写了一些基础代码------》我们只需要在固定的位置写固定的代码--》就能实现一个web应用
Web框架(Web framework)是一种开发框架,用来支持动态网站、网络应用和网络服务的开发。这大多数的web框架提供了一套开发和部署网站的方式,也为web行为提供了一套通用的方法。web框架已经实现了很多功能,开发人员使用框架提供的方法并且完成自己的业务逻辑,就能快速开发web应用了。浏览器和服务器的是基于HTTP协议进行通信的。也可以说web框架就是在以上十几行代码基础张扩展出来的,有很多简单方便使用的方法,大大提高了开发的效率。

1.2   python界有个协议  wsgi协议

客户端浏览器和         ---------------------->      python web框架之间通信需要遵循这个协议
    发出来的是http请求    符合wsgi协议的web服务器         django,flask  requset response
    
    
基于这个协议的web服务器
        -wsgiref:django框架默认就用它---》性能低,并发量低--》测试阶段使用
        -uwsgi:c语言写的
        -gunicorn:python写的
        
协议到底怎么规定的:web服务器后面的  python框架一定是一个可调用的对象,必须接收两个参数(environ, start_response)--->environ它是个字典----》里面全是http请求的东西

1.3  使用wsgiref写个web服务

from wsgiref.simple_server import make_serverdef mya(environ, start_response):print(environ)start_response('200 OK', [('Content-Type', 'text/html')])if environ.get('PATH_INFO') == '/index':with open('index.html','rb') as f:data=f.read()elif environ.get('PATH_INFO') == '/login':with open('login.html', 'rb') as f:data = f.read()else:data=b'<h1>Hello, web!</h1>'return [data]# 可调用对象---》能加括号执行的对象
if __name__ == '__main__':myserver = make_server('', 8011, mya) # 请求来了---》经过wsgiref---》调用后面的可调用对象--》传入两个参数(environ, start_response)print('监听8011')myserver.serve_forever()

二、 路由控制

2.1 路由是什么?

URL配置(URLconf)就像Django 所支撑网站的目录。它的本质是URL与要为该URL调用的视图函数之间的映射表;你就是以这种方式告诉Django,对于客户端发来的某个URL调用哪一段逻辑代码对应执行
请求路径和要执行的视图函数的对应关系。

 2.2 如何使用?

-path:准确路径,精准匹配---》以后基本都是path

-re_path---》就是原来的url---》正则匹配---》非常少
-放在列表中:urlpatterns = []--->列表中得数据,必须是 path或re_path执行完的结果

2.3  path详细使用

path('admin/', login)---》
等价于:_path(route, view, kwargs=None, name=None)
第一个参数:
        准确路径,字符串
        转换器: '<int:pk>'  '<str:name>' 
            -127.0.0.1:8080/login/justin---->path('login/<str:name>', admin.site.urls),
            -视图函数中 def login(request,name)
第二个参数: 视图函数的内存地址  不要加括号
        -路由一旦匹配成功,就会执行 你写的这个视图函数(request),并且会把request对象传入
        -如果有分组的参数[有名,无名],或者转换器的参数,都会被传递到视图函数中作为参数
        -总结:放要放视图函数地址---》但是视图函数的参数:第一个是固定必须是request,后续的取决于写没写转换器,写没写有名无名分组
        
    第三个参数:kwargs 是给视图函数传递默认参数
    第四个参数:路径的别名---》后期使用反向解析得到该路径

2.4  re_path的详细使用

跟path除了第一个参数不一样,其他完全一样
    第一个参数是:正则表达式
    后期用的很少,危险性大---》原来之所以支持正则的目的是为了分组出参数
    path通过转换器能完成这个操作--》于是--》这个几乎不用

2.5  反向解析--->用在视图函数中,用在模板中

-没有转换器的情况:
        path('login/', login,name='login')
        res=reverse('login')  #当时 定义路径传入的name参数对应的字符串
    -有转换器的情况:
        path('login/<str:name>', login,name='login')
        res=reverse('login',kwargs={name:lqz})  #当时 定义路径传入的name参数对应的字符串
        生成这种路径:'login/lqz'

2.6   路由分发

-为什么默认路由匹配就匹配到了 urls.py ?
        -settings.py 有配置的
        -ROOT_URLCONF = 'django_demo02.urls'
        
    -一个app自己有自己的路由
        -在app下创建urls.py 

 三、视图层

 1 views.py 这个文件---》目前写的是视图函数

# 2 视图函数必须写成这样
def 视图函数(request):
    return 四件套


# 3 request对象
    -它是http请求(数据包---》字符串形式)---》拆分成了django中得request对象
    -常用的:
        request.path
        request.method
        request.GET
        requets.POST
        requets.body
        request.get_full_path()  # 方法
        request.files   # 前端携带文件过来---》转成了字典,根据文件的名字取到文件对象
       

    -不常用
           request.cookie
        request.session
        request.content_type  # 提交的编码格式:urlencoded(form表单),json,form-data,text/plain(一般不用,浏览器默认的格式)
        request.META: 请求头中得数据
            user-agent:HTTP_USER_AGENT
            referer:
            客户端ip地址:REMOTE_ADDR
            用户自定义的  
                定义:name=lqz
                取:request.META.get('HTTP_NAME')  # 前面加HTTP_ 把自定义的转成大写
        -request.user  # auth
        -request.is_ajax()  
        
# 4 四件套

#5 cbv
# 6 文件上传

四、今日任务

 4.1 复习MySQL分组

关键字:GROUP BY和HAVING

注:

、GROUP BY可以包含任意数目的列(能够对分组进行嵌套)。

2、GROUP BY嵌套了分组,数据将在最后规定的分组上进行汇总(建立分组时,指定的所有列都一起计算)。

3、GROUP BY子句中列出的每一个列都必须是检索列或有效的表达式(但不能是聚集函数)。如果在SELECT中使用表达式,则必须在GROUP BY子句中指定相同的表达式。不能使用别名。

4、SELECT给出多少个列,GROUP BY就给出多少个列。

5、分组列中有NULL,则NULL将作为一个分组返回。如果有多个NULL,则将他们分为一组。

6、GROUP BY子句必须出现在WHERE子句之后,ORDER BY子句之前。

4.2 get请求能携带请求体吗?

答:能

4.3  5 0.0.0.0和localhost和127.0.0.1 有什么区别?

共同点:   

  1. 都属于特殊地址。
  2. 都属于A类地址。
  3. 都是IPV4地址。

区别:

  1. 在服务器中,0.0.0.0指的是本机上的所有IPV4地址,,如果我绑定的端口指定了0.0.0.0,那么通过内网地址或外网地址都可以访问我的应用。但是如果我只绑定了内网地址,那么通过外网地址就不能访问,所以如果绑定0.0.0.0,也有一定安全隐患,对于只需要内网访问的服务,可以只绑定内网地址。
  2. 在路由中,0.0.0.0表示的是默认路由,即当路由表中完全没有找到完全匹配的路由的时候所对应的路由。

 4.4 画出django请求生命周期

相关文章:

11.28 知识回顾(Web框架、路由控制、视图层)

一、 web 框架 1.1 web框架是什么&#xff1f; 别人帮咱们写了一些基础代码------》我们只需要在固定的位置写固定的代码--》就能实现一个web应用 Web框架&#xff08;Web framework&#xff09;是一种开发框架&#xff0c;用来支持动态网站、网络应用和网络服务的开发。这大多…...

osgFX扩展库-异性光照、贴图、卡通特效(1)

本章将简单介绍 osgFX扩展库及osgSim 扩展库。osgFX库用得比较多,osgSim库不常用&#xff0c;因此&#xff0c;这里只对这个库作简单的说明。 osgFX扩展库 osgFX是一个OpenSceneGraph 的附加库&#xff0c;是一个用于实现一致、完备、可重用的特殊效果的构架工具&#xff0c;其…...

SELinux零知识学习三十一、SELinux策略语言之角色和用户(2)

接前一篇文章:SELinux零知识学习三十、SELinux策略语言之角色和用户(1) 三、SELinux策略语言之角色和用户 SELinux提供了一种依赖于类型强制(类型增强,TE)的基于角色的访问控制(Role-Based Access Control),角色用于组域类型和限制域类型与用户之间的关系,SELinux中…...

Unity UGUI的自动布局-LayoutGroup(水平布局)组件

Horizontal Layout Group | Unity UI | 1.0.0 1. 什么是HorizontalLayoutGroup组件&#xff1f; HorizontalLayoutGroup是Unity UGUI中的一种布局组件&#xff0c;用于在水平方向上对子物体进行排列和布局。它可以根据一定的规则自动调整子物体的位置和大小&#xff0c;使它们…...

【SpringCloud】设计原则之分层架构与统一通信协议

一、设计原则之分层架构 应用分层看起来很简单&#xff0c;但每个程序员都有自己的一套方法&#xff0c;哪怕是初学者&#xff0c;所以实施起来并非易事 最早接触的分层架构应该是最熟悉的 MVC&#xff08;Model - View - Controller&#xff09;架构&#xff0c;其将应用分成…...

在Linux环境如何启动和redis数据库?

Linux中连接redis数据库&#xff1a; 前台启动&#xff1a; 第一步&#xff1a;redis-server:服务器启动命令 当我们启动改窗口后&#xff0c;出现如下所示&#xff1a; 该窗口就不能关闭&#xff0c;否则会出现redis无法使用的情况&#xff0c;重新打开一个窗口&#xff0c…...

selenium判断元素是否存在的方法

文章目录 快捷方法完整示例程序 快捷方法 selenium没有exist_xxx相关的方法&#xff0c;无法直接判断元素存在。但是锁定元素时使用的browser.find_elements(By.CSS_SELECTOR, "css元素")会返回一个列表list&#xff0c;如果不存在这个元素就会返回一个空列表。因此…...

后端真批量新增的使用

1,添加真批量新增抽象接口 public interface EasyBaseMapper extends BaseMapper { /** * 批量插入 仅适用于mysql * * return 影响行数 */ Integer insertBatchSomeColumn(Collection entityList); } 2,新增类,添加真批量新增的方法 public class InsertBatchSqlInjector ext…...

HttpRunner原来还能这么用,大开眼界!!!

hook机制 Httprunner 框架中的 hook 机制相当于unittest框架中的 setup , teardown 函数&#xff0c;用来进行测试用例执行之前的环境初始化以及测试用例执行完毕之后的环境清理操作。 httprunner 中的 hooks 机制可以用在测试用例层级也可以用在测试步骤层级&#xff0c;其关键…...

给WordPress 自带的搜索功能添加过滤只搜索文章的标题

如果想让 WordPress 自带的搜索功能只搜索文章标题&#xff0c;让搜索结果更加精确&#xff08;其实WordPress 自带的搜索功能本来模糊查找就很弱&#xff09;&#xff0c;可以将下面的代码添加到当前主题functions.php中&#xff1a; 用过滤器&#xff1a;posts_search 就可以…...

frp内网穿透

1 概述 frp 是什么? frp 是一款高性能的反向代理应用,专注于内网穿透。它支持多种协议,包括 TCP、UDP、HTTP、HTTPS 等,并且具备 P2P 通信功能。使用 frp,您可以安全、便捷地将内网服务暴露到公网,通过拥有公网 IP 的节点进行中转。frp原理 公网服务器作为服务端,内网服…...

哈希和unordered系列封装(C++)

哈希和unordered系列封装 一、哈希1. 概念2. 哈希函数&#xff0c;哈希碰撞哈希函数&#xff08;常用的两个&#xff09;哈希冲突&#xff08;碰撞&#xff09;小结 3. 解决哈希碰撞闭散列线性探测二次探测代码实现载荷因子&#xff08;扩容&#xff09; 开散列哈希桶代码实现扩…...

PHP基础与安全

基础 1. 简介概述 ●PHP是脚本语言-是一门弱类型语言&#xff0c;不需要事先编译 ●PHP 脚本在服务器上执行&#xff0c;然后向浏览器发送回纯文本的 HTML 结果 ●超文本预处理器&#xff0c;服务器端脚本语 2.创建&#xff08;声明&#xff09;PHP变量 ● 变量以 $ 符号开…...

【面试HOT200】滑动窗口篇

系列综述&#xff1a; &#x1f49e;目的&#xff1a;本系列是个人整理为了秋招面试的&#xff0c;整理期间苛求每个知识点&#xff0c;平衡理解简易度与深入程度。 &#x1f970;来源&#xff1a;材料主要源于【CodeTopHot200】进行的&#xff0c;每个知识点的修正和深入主要参…...

cocos2dx ​​Animate3D(三)

一些总结 动作&#xff08;Actions&#xff09; move移动&#xff1a;moveto/moveby 从一个位置移动到另外一个位置 从一个位置移动多少数量级rotate旋转&#xff1a;rotateto/rotateby 从一个角度旋转到另外一个角度 旋转多少个数量级scale缩放&#xff1a;scaleto/scaleby …...

单文件组件MVVM

单文件组件&MVVM 所谓组件化开发&#xff0c;就是创建一个个组件。 Vue是一个大类&#xff0c;渲染一切从new Vue开始。 指定视图&#xff1a;el template render:jsx语法 $mount[数学公式] 编译App.vue&#xff0c;作为视图入口 单个组件&#xff1a;结构 样式 data compu…...

python基础练习题库实验6

文章目录 题目1代码实验结果题目2代码实验结果题目3代码实验结果题目4代码实验结果题目总结题目1 根据以下规范编写一个函数: 函数名称:triple输入参数:1个输入参数数据类型字符串返回值:函数返回1个字符串值。该字符串由每个字符重复3次的句子构成。例如,如果句子是Uni,…...

SwiftUI 如何动态开始和停止播放永久重复(repeatForever)动画

0. 功能需求 在 SwiftUI 丰富多彩的动画世界中,我们有时希望可以随意开始和停止永久循环(repeatForever)的动画,不过这时往往会产生错误的动画“叠加”效果。 从上图可以看到:虽然我们希望密码输入框背景只在用户输入密码时才发生闪烁,但顶部的密码输入框随着不断输入其…...

批量采集淘宝商品数据,有哪些方式可以实现?

引言 在当今的数字化时代&#xff0c;数据已经成为企业竞争的核心资源。对于电商行业来说&#xff0c;对商品数据的采集和分析更是关键。淘宝作为中国最大的电商平台之一&#xff0c;其丰富的商品数据和用户行为数据具有极高的价值。那么&#xff0c;如何批量采集淘宝商品数据…...

Solidworks模型上色技巧以及增加快捷键快速打开和关闭“阴影效果和楼板反射”

Solidworks模型上色技巧 Chapter1 给Solidworks模型上色技巧设置外观的方法具体操作删除颜色的技巧这样操作&#xff1a; Chapter2 SOLIDWORKS小技巧 | SolidWorks装配体零件快速上色自动设置Chapter3 solidworks装配图如何去掉阴影&#xff1f;Solidworks2022中的阴影效果怎么…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​&#xff0c;覆盖应用全生命周期测试需求&#xff0c;主要提供五大核心能力&#xff1a; ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

【2025年】解决Burpsuite抓不到https包的问题

环境&#xff1a;windows11 burpsuite:2025.5 在抓取https网站时&#xff0c;burpsuite抓取不到https数据包&#xff0c;只显示&#xff1a; 解决该问题只需如下三个步骤&#xff1a; 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

Typeerror: cannot read properties of undefined (reading ‘XXX‘)

最近需要在离线机器上运行软件&#xff0c;所以得把软件用docker打包起来&#xff0c;大部分功能都没问题&#xff0c;出了一个奇怪的事情。同样的代码&#xff0c;在本机上用vscode可以运行起来&#xff0c;但是打包之后在docker里出现了问题。使用的是dialog组件&#xff0c;…...

华硕a豆14 Air香氛版,美学与科技的馨香融合

在快节奏的现代生活中&#xff0c;我们渴望一个能激发创想、愉悦感官的工作与生活伙伴&#xff0c;它不仅是冰冷的科技工具&#xff0c;更能触动我们内心深处的细腻情感。正是在这样的期许下&#xff0c;华硕a豆14 Air香氛版翩然而至&#xff0c;它以一种前所未有的方式&#x…...

算法岗面试经验分享-大模型篇

文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer &#xff08;1&#xff09;资源 论文&a…...

短视频矩阵系统文案创作功能开发实践,定制化开发

在短视频行业迅猛发展的当下&#xff0c;企业和个人创作者为了扩大影响力、提升传播效果&#xff0c;纷纷采用短视频矩阵运营策略&#xff0c;同时管理多个平台、多个账号的内容发布。然而&#xff0c;频繁的文案创作需求让运营者疲于应对&#xff0c;如何高效产出高质量文案成…...

JavaScript基础-API 和 Web API

在学习JavaScript的过程中&#xff0c;理解API&#xff08;应用程序接口&#xff09;和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能&#xff0c;使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...

为什么要创建 Vue 实例

核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...

Axure 下拉框联动

实现选省、选完省之后选对应省份下的市区...