首页 > 其他分享 >补充2

补充2

时间:2023-11-28 17:12:25浏览次数:32  
标签:请求 补充 request 视图 --- path login

1.HTTP是什么  

2.HTTP特点         详情见上篇

3请求协议详情

  请求首行---请求方式,请求地址,请求协议版本

    请求头---key:value形式

      ---referer:上一次访问的地址

      ---user-agent:客户端类型
      -cookie: 只要是当前域[www.://www.baidu.com/]中有cookie 当再次请求会携带  (cookie是响应给的,浏览器会拿着cookie存到浏览器 ,当再次访问,都会携带给的cookie 过去  就会区分谁是谁)

      -请求体一般都没有请求体

4 相应协议详情

   响应首行: 响应协议版本,响应状态码,响应描述

   响应头: key-value形式  cookie带在响应头中---浏览器会把它存到 浏览器中

   响应体: 浏览器页面中 看到的东西  -----html标签 

5.响应状态码     

 5.URL简介  统一资源定位符

      统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它

    

格式:协议://IP:端口(80)/路径?name=lqz&age=18
http协议,如果不写端口号--》默认是80

?之前的是请求路径,?之后的是请求数据部分

   POST既能带在 地址栏中数据,又能带在请求体中数据

    get请求一般都带在地址栏中

 

补充:

  请求一个网址

  https://www.example.com/path/to/resource?param1=value1&param2=value2

 

   协议是HTTPS,主机民是 www.example.com 路径是/path/to/resourc     查询参数是 ?param1=value1&param2=value2

   携带数据到后端有哪几种方式?

     1.带在地址栏中  域名+路径+参数 

     https://www.example.com/path/to/resource?param1=value1&param2=value2
     Django 从 request.GET     request.get_full_path

       2.带在请求体中--- http的请求体  -      多种编码格式   json(前后端分离)   form-data(传文件) urlencoded(form 表单 默认)              Django从: request.POST   request.body(请求体)    post请求与request是因为 jango框架 帮做了取出来的,正确是从 get_full_path ?后截取的字节 用字符串的截断&符号做分割组合到字典里去    

             

            hettp请求最终变成了 request对象  不同的名字是 django框架包装而成  比如flask框架会用refer

            虽然都是request 但是 不同框架 封装自己不同类, 类里的方法不一样

      3.带在请求头中

       Django中哪里取  在requet.META ---取出请求头

      服务响应给客户端数据

      --响应头

      -用的最多: 响应体

  

至于 Ajax

   $.ajax({

    path:/login/?name=lqz,

    data:{}  

})写成这样最终它会变成一个  http请求,写的path实际是请求路径,写的data就是请求体

————————————————————————————————————————————————————————————————————————————————————————————————————————————————                 

    HTTP协议补充

  基于TCP可靠传输   ——客户端-----》服务端

  基于TCP的连接 ------》三次握手

  客户端给服务端发送消息 ----》借助于TCP通道

  服务端给客户端回消息 -----》借助于TCP通道

  断开TCP的连接  -----》四次挥手        ———————而这是 0.9的版本 效率很低

  

  客户端同时发送两个http请求 —————http主流1.1版本    keep-alive  --时间--- 过了时间TCP就会断开
  客户端----》服务端
  建立tcp的链接---》三次握手
  ---第一次请求----
  客户端给服务端发送消息---》借助于tcp通道
  服务端给客户端回消息----》借助于tcp通道
  ---第二次请求----
  客户端给服务端发送消息---》借助于tcp通道
  服务端给客户端回消息----》借助于tcp通道
  断开tcp的链接----》四次挥手

  

  客户端同时发送5个http请求——————————http 2.x版本---->多路复用
  客户端----》服务端
  建立tcp的链接---》三次握手
  tcp是流式协议---》一次带了一些数据 【请求1的数据,请求2的数据,请求3的数据,请求4的数据,请求5的数据 】
  tcp的响应---》一次性带回来了

  断开tcp的链接----》四次挥手

 

 http 3.x版本---》使用udp+协议 保证了可靠  

 

web框架

  实质就是别人帮我们卸了一些基础代码,我们只需在固定的位置写固定的代码,就能实现一个web应用

python协议    wsgi协议

   客户端浏览器 和python web框架之间 通信需要遵循这个协议

    发出的是HTTP请求 ,符合wsgi协议的web服务器  django, flask  request  response

      基于这个协议的 web服务器

      -wsgiref:django框架默认就用它  (性能低,并发量低) 测试用

      -uwsgi: C语言写的

      -gunicorn: python写的

   协议的规定: web服务器后面的 python框架一定是一个可调用的对象,必须接受两个参数(environ,start_response)  environ是个字典  里面是http请求的东西

 

使用wsgiref写个web服务  

    from wsgiref.simple_server import make_server

 

  def 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()

 

  

Django

      MVC与MTV模型  ----所有web框架其实都是遵循mvc架构

 

   MVC 本来在一起的代码,拆到不同的位置 

    模型(M:数据层),控制器(C:逻辑判断)和视图(V:用户看到的)三层
他们之间以一种插件式的、松耦合的方式连接在一起,模型负责业务对象与数据库的映射(ORM),视图负责与用户的交互(页面),控制器接受用户的输入调用模型和视图完成用户的请求

  MTV   

   M 代表模型(Model): 负责业务对象和数据库的关系映射(ORM)。
      M就是原来的M
           T 代表模板 (Template):负责如何把页面展示给用户(html)。
           T就是原来的V
           V 代表视图(View): 负责业务逻辑,并在适当时候调用Model和Template
                      V+路由 是原来的C

路由控制

  路由是什么?

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

    如何使用?
  -path:准确路径,精准匹配---》以后基本都是path
-re_path---》就是原来的url---》正则匹配---》非常少

-放在列表中:urlpatterns = []--->列表中得数据,必须是 path或re_path执行完的结果

 

     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 是给视图函数传递默认参数
      第四个参数:路径的别名---》后期使用反向解析得到该路径

  re_path的详细使用

    跟path除了第一个参数不一样,其他完全一样

      第一个参数是:正则表达式 (不安全性很大)之所以支持正则的目的是为了分组出参数

      path通过转换器能完成这个操作 - --几乎不用

  反向解析--用在视图函数中,(模板中)

   没有转换器的情况

         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'

  路由分发

   为什么默认路由匹配就匹配到了 urls.py?

      -setting.py 配置的

      -ROOT_U?RLCONF='Django_demo02.urls '

    一个app自己有自己的路由

      -在app下创建urls.py

视图层

    views.py ---目前写的是视图函数

    视图函数必须写成这样

  def 视图函数(request):

    return 四件套

   request对象

    它是http请求(数据包---)字符串形式 ---拆分成了 django中的request都西昂

    常用的:

       requets.path        || requets.method ||  requets.GET

       requets.POST     || requets.vody      || requets.get_full_path()

       requets.files   ——————前端携带文件过来----转成了字典,根据文件的名字取到文件对象

    不常用:

       requets.cookie  || requets.session || requets.content_type 提交的编码格式:urlencoded(form表单),json,form-data,text/pain(服务器默认的格式,一般不用)

       requets.META:请求头中的数据

         user-agent:HTTP_USER_AGENT

       referer:

       客户端ip地址: REMOTE_ADDR

       用户自定义的

         定义:name=lqz

          取:request.META.egt('HTTP_NAME') 前面加HTTP_自定义转大写

——————————————————————————————————————————————————————————————————————————————————————

MySQl分组:

1. group by

① group by的含义:将查询结果按照1个或多个字段进⾏分组,字段值相同的为⼀组

② group by可⽤于单个字段分组,也可⽤于多个字段分组

group by + group_concat()

① group_concat(字段名)可以作为⼀个输出字段来使⽤,

 

② 表⽰分组之后,根据分组结果,使⽤group_concat()来放置每⼀组的某字段的值的集 合

group by + 集合函数 

可以统计出每个分组的某字段的值的集合,那么我们也可以通过集合函数来对这个 值的集合 做⼀些操作

4. group by + having

① having 条件表达式:⽤来分组查询后指定⼀些条件来输出查询结果

② having作⽤和where⼀样,但having只能⽤于group   by     _____https://blog.csdn.net/weixin_64652936/article/details/123443391

 

get请求能携带请求体吗?
-地址栏中:get,post都能带
-请求体:post ,get能不能呢?

GET请求不能通过请求体携带数据,但可以通过请求头携带

环境变量干啥用的?

(1)设置参数

path环境变量的作用就是告诉系统,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到哪些目录下去寻找。而我们通常情况下配置的path变量,就是这个目录的完整路径。

简而言之,就是运行某个命令需要某些参数时,如果当前目录下找不到,则自动去环境变量中寻找。

(2)软件共用

很多朋友会在自己的计算机上安装双系统,例如C盘安装Windows XP,D盘安装Windows 7。可是某些软件往往只在Windows XP系统中安装,Windows 7系统中是无法正常使用的,比较麻烦却有效的方法是再安装一遍。当我们了解了环境变量中的用途后就可以很好解决双系统的软件共用问题。

(3)系统运行

为什么在Windows XP中安装了的软件在Windows 7下无法运行呢(绿色软件除外)?原因是安装软件时往往须要向系统目录中复制某些文件,而使用另外一个系统时会由于缺少这些文件而无法运行。因此,我们可以通过设置环境变量的方法来解决这个问题。

5 .0.0.0.0和localhost和127.0.0.1 有什么区别

 

标签:请求,补充,request,视图,---,path,login
From: https://www.cnblogs.com/wzh366/p/17862426.html

相关文章

  • Python知识补充pip 安装包的工具
    Python知识补充pip安装包的工具(1)安装第三方模块pipinstall模块名pipinsyall模块名==#查看我当前模块都有哪些版本pipinsyall模块名==版本号#安装指定版本的模块(2)卸载模块pipuninstall模块名(3)临时换源pipuninstall模块名清华大学: https://pypi.tuna.......
  • day03-2PyCharm相关知识补充
    【PyCharm相关知识补充】【一】常用快捷键大全【1】基本编辑快捷键Ctrl+Space:基本的代码完成(类、方法、属性)Ctrl+Alt+Space:快速导入任意类Ctrl+Shift+Enter:语句完成Ctrl+P:参数信息(在方法中调用参数)Ctrl+Q:快速查看文档F1:外部文档Shift+F1:外......
  • day03-1Python相关知识补充
    【Python相关知识补充】【一】PIP换源【1】问题描述在使用Python时,我们经常需要用到pip安装第三方包,在某些情况下,由于网络速度慢或者其他各种原因,pipinstall会非常慢,甚至可能无法完成。在终端窗口使用以下命令进行第三方模块的下载、卸载:pipinstall模块名pipinstall......
  • 计算机五大部件补充
    (一)计算机系统的组成计算机由五大部分组成,包括控制器、运算器、存储器、输入设备和输出设备组成。(二)五大部分的作用(1)控制器计算机的控制系统,是计算机的神经中枢,指挥着计算机中各个部件自动协调工作。在控制器的控制下,计算机能够自动按照程序设定的步骤进行一系列操作......
  • mysql巡检脚本sql补充
    --没有主键索引mysql[localhost:8028]{root}(test)>SELECTt.table_schema,t.table_name,t.engine->FROMinformation_schema.tablest->JOINinformation_schema.columnsc->ONt.table_schema=c.table_schema->ANDt.table_name=c.......
  • (lora训练补充数据)父目录镜像
    importosfromPILimportImagedefflip_and_duplicate_image(image_path,output_path):"""Flipanimagehorizontallyandsaveacopywithasuffix."""try:withImage.open(image_path)asimg:......
  • 函数(4)本地变量(局部变量)及函数细节补充
    <1>本地变量(1)本地变量的定义函数每一次运行都会产生一个独立的变量空间,在这个变量空间中的变量是函数此次运行中独有的变量,称为本地变量;定义在函数内部的变量就是本地变量;参数也是本地变量;(2)变量的生存期和作用域生存期:从变量开始出现到变量消亡的时间;作用域:在代码的......
  • 【3.2】Pycharm相关补充
    【一】常用快捷键大全【1】基本编辑快捷键Ctrl+Space:基本的代码完成(类、方法、属性)Ctrl+Alt+Space:快速导入任意类Ctrl+Shift+Enter:语句完成Ctrl+P:参数信息(在方法中调用参数)Ctrl+Q:快速查看文档F1:外部文档Shift+F1:外部文档,进入web文档主页......
  • 【3.1】Python相关补充
    【一】PIP换源【1】问题描述在使用Python时,我们经常需要用到pip安装第三方包。但是,在某些情况下,由于网络速度慢或者其他各种原因,pipinstall会非常慢,甚至可能无法完成。为了解决这个问题,我们提供以下几种方法。【2】永久更换pip源一般来说,我们使用的是默认的pip源,这个源......
  • 机器视觉选型计算器,初级版,后续慢慢补充
    做机器视觉的都知道,每次选型都得做各种计算,但是没有人把硬件选型做出一个工具,今天利用一点闲暇时间,几分钟吧,简单做了个,后续再把其他一些硬件选型公式计算器功能做上去,有需要的自取。1.DPI相关计算器 2.工作距离相关计算器 3.待补充,编码器等 4.关于 有需要自行......