做影视网站需要多少钱,中铁建设集团有限公司有多少个局,做视频搬运哪个网站最赚钱,国内站长做国外网站1.http
1.1http请求协议与响应协议
1.1.1简介
http协议包含由浏览器发送数据到服务器需要遵循的请求协议与服务器发送数据到浏览器需要遵循的请求协议。用于HTTP协议交互的信被为HTTP报文。请求端(客户端)的HTTP报文 做请求报文,响应端(服务器端)的 做响应报文。HTTP报文本身…1.http
1.1http请求协议与响应协议
1.1.1简介
http协议包含由浏览器发送数据到服务器需要遵循的请求协议与服务器发送数据到浏览器需要遵循的请求协议。用于HTTP协议交互的信被为HTTP报文。请求端(客户端)的HTTP报文 做请求报文,响应端(服务器端)的 做响应报文。HTTP报文本身是由多行数据构成的字 文本。
1.1.2请求格式 1.1.3请求方式get和post请求
GET提交的数据会放在URL之后以?分割URL和传输数据参数之间以相连如EditBook?nametest1id123456. POST方法是把提交的数据放在HTTP包的请求体中.GET提交的数据大小有限制因为浏览器对URL的长度有限制而POST方法提交的数据没有限制.GET与POST请求在服务端获取请求数据方式不同。
1.2响应协议
1.2.1响应格式 1.2.2响应状态码
状态码的职 是当客户端向服务器端发送请求时, 返回的请求 结果。借助状态码,用户可以知道服务器端是正常 理了请求,还是出 现了 。状态码如200 OK,以3位数字和原因 成。数字中的 一位指定了响应 别,后两位无分 。响应 别有以5种。 2.web框架
2.1简介
Web框架Web framework是一种开发框架用来支持动态网站、网络应用和网络服务的开发。这大多数的web框架提供了一套开发和部署网站的方式也为web行为提供了一套通用的方法。web框架已经实现了很多功能开发人员使用框架提供的方法并且完成自己的业务逻辑就能快速开发web应用了。浏览器和服务器的是基于HTTP协议进行通信的。也可以说web框架就是在以上十几行代码基础张扩展出来的有很多简单方便使用的方法大大提高了开发的效率。
2.2wsgiref模块
最简单的Web应用就是先把HTML用文件保存好用一个现成的HTTP服务器软件接收用户请求从文件中读取HTML返回。
如果要动态生成HTML就需要把上述步骤自己来实现。不过接受HTTP请求、解析HTTP请求、发送HTTP响应都是苦力活如果我们自己来写这些底层代码还没开始写动态HTML呢就得花个把月去读HTTP规范。
正确的做法是底层代码由专门的服务器软件实现我们用Python专注于生成HTML文档。因为我们不希望接触到TCP连接、HTTP原始请求和响应格式所以需要一个统一的接口协议来实现这样的服务器软件让我们专心用Python编写Web业务。这个接口就是WSGIWeb Server Gateway Interface。而wsgiref模块就是python基于wsgi协议开发的服务模块。
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:dataf.read()elif environ.get(PATH_INFO) /login:with open(login.html, rb) as f:data f.read()else:databh1Hello, web!/h1return [data]if __name__ __main__:myserver make_server(, 8011, mya)print(监听8010)myserver.serve_forever()
3.路由控制
3.1Django中路由的作用
URL配置(URLconf)就像Django 所支撑网站的目录。它的本质是URL与要为该URL调用的视图函数之间的映射表你就是以这种方式告诉Django对于客户端发来的某个URL调用哪一段逻辑代码对应执行
典型的例子
from django.urls import pathurlpatterns [path(articles, views.special),
]
# articles这个路由对应着视图函数中special这个方法浏览器输入这个链接就会响应到special这个函数来执行
3.2简单的路由的配置
from django.conf.urls import urlurlpatterns [url(正则表达式, views视图函数参数别名),
]
正则表达式一个正则表达式字符串views视图函数一个可调用对象通常为一个视图函数或一个指定视图函数路径的字符串参数可选的要传递给视图函数的默认参数字典形式别名一个可选的name参数
from django.urls import path,re_path
from app01 import viewsurlpatterns [re_path(r^articles/2003/$, views.special_case_2003),re_path(r^articles/([0-9]{4})/$, views.year_archive),re_path(r^articles/([0-9]{4})/([0-9]{2})/$, views.month_archive),re_path(r^articles/([0-9]{4})/([0-9]{2})/([0-9])/$, views.article_detail),
]
注意
若要从URL 中捕获一个值只需要在它周围放置一对圆括号。不需要添加一个前导的反斜杠因为每个URL 都有。例如应该是^articles 而不是 ^/articles。每个正则表达式前面的’r’ 是可选的但是建议加上。它告诉Python 这个字符串是“原始的” —— 字符串中任何字符都不应该转义urlpatterns中的元素按照书写顺序从上往下逐一匹配正则表达式一旦匹配成功则不再继续 3.3path详细使用
path(admin/, login)---》 等价于_path(route, view, kwargsNone, nameNone) 第一个参数 准确路径字符串 转换器 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 是给视图函数传递默认参数 第四个参数路径的别名---》后期使用反向解析得到该路径
3.4re_path的详细使用
跟path除了第一个参数不一样其他完全一样 第一个参数是正则表达式 后期用的很少危险性大---》原来之所以支持正则的目的是为了分组出参数 path通过转换器能完成这个操作--》于是--》这个几乎不用
3.5反向解析
用在视图函数中用在模板中 -没有转换器的情况 path(login/, login,namelogin) resreverse(login) #当时 定义路径传入的name参数对应的字符串 -有转换器的情况 path(login/str:name, login,namelogin) resreverse(login,kwargs{name:lqz}) #当时 定义路径传入的name参数对应的字符串 生成这种路径login/lqz
3.6路由发
-为什么默认路由匹配就匹配到了 urls.py ? -settings.py 有配置的 -ROOT_URLCONF django_demo02.urls -一个app自己有自己的路由 -在app下创建urls.py