[Python web开发] Web框架开发基础 (一)
Python WEB框架
WSGI,WEB Server Gateway Interface,可以看做是一种底层协议,它规定了服务器程序和应用程序各自实现上面接口。Python的实现称为wsgiref
Flask,基于WSGI,微框架
Django,基于WSGI,开源的WEB框架
C/S与B/S的区别
学习web框架的目的:
1、了解WEB框架工作机制
了解众多框架背后的技术,将来可以对框架做二次开发、定制改版
2、学习API封装
学习框架封装的思想,并提供友好的编程接口
HTTP协议:
http协议是无状态协议。
同一个客户端的两次请求之间没有任何关系,从服务器端角度来说,它不指定这两个请求来自同一个客户端。
有连接、短连接
有连接,HTTP基于TCP协议,是面向连接的,需要3次握手、4次断开。
短连接,http 1.1之前,都是一个请求一个连接,而TCP的李连杰创建销毁成本高,对服务器有很大的影响。所以,从http 1.1开始,支持keep-alive,默认也开启,一个连接创建后,会保持一段时间(可设置),浏览器再访问该服务器就使用这个TCP连接,减轻了服务器压力,提高了效率。
Cookie:
一个、或多个键值对信息。身份标识
一般情况下,浏览器发起第一次请求时,服务器回复给浏览器一份Cookie信息,并在服务端存储一份,下次浏览器再访问该服务器时,浏览器会带上服务器设置的Cookie,服务器收到之后,检查发现这个Cookie标识之前曾经访问过,就会将服务器上有效保存的一些数据传给浏览器。
Cookie一般都有过期时间。
客户端可以自己设置Cookie信息,甚至是其他人的Cookie(只要你能得到),这样就能以别人的身份登陆服务器(Cookie没过期情况下)。
所以Cookie必须安全保管,不可以泄露。
URL:
uniform resource locator 统一资源定位符,每一个链接指向一个资源供客户端访问。
schema://host[:port#]/path/.../[;url-params][?query-string][#anchor]
schema 协议、模式:
http、ftp、https、file、mailto等等。
host:port
host可以是ip地址也可以是域名,port默认是80,用冒号相连。
/path/to/resource
path 为webserver上的一个同名资源路径,或者一个alias目录别名。
resource 资源名
index.php?key1=value1&key2=value2
query string,查询字符串,表示向index.php资源获取指定字符串,?号分割,后面key=value格式,多个kv对用&分割。
HTTP消息:
消息分为Request、Resphone。
Request:浏览器向服务器发起的请求
Resphone:服务器对客户端请求的响应。
请求和响应消息都是由请求行、Header消息报头、Body消息正文组成。
请求行:
https://github.com/ysrc/xunfeng/blob/master/vulscan/vuldb/iis_webdav_rce.py
Header消息报头:
GET /ysrc/xunfeng/blob/master/vulscan/vuldb/iis_webdav_rce.py HTTP/1.1
Host: github.com
Connection: keep-alive
Cache-Control: max-age=0
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36
Upgrade-Insecure-Requests: 1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Body消息正文:
通常出现在POST请求方法中:
username=admin&password=123456
[Python web开发] Web框架开发基础 (一)的更多相关文章
- (数据科学学习手札102)Python+Dash快速web应用开发——基础概念篇
本文示例代码与数据已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 这是我的新系列教程Python+Dash快 ...
- 真零基础Python开发web
Python开发web服务的优势是开发效率高,可能只需要java五分之一的代码量. Python搭建web服务有许多框架,本文介绍Django和bottle两个框架. Django 安装 首先,安装该 ...
- 第六模块:WEB框架开发 第1章·Django框架开发1~50
01-Django基础介绍 02-Web应用程序1 03-Web应用程序2 04-http请求协议1 05-http请求协议2 06-http协议之响应协议 07-wsgire模块1 08-wsgir ...
- (数据科学学习手札103)Python+Dash快速web应用开发——页面布局篇
本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 这是我的系列教程Python+Dash快速web ...
- (数据科学学习手札117)Python+Dash快速web应用开发——交互表格篇(下)
本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 这是我的系列教程Python+Dash快速web ...
- (数据科学学习手札120)Python+Dash快速web应用开发——整合数据库
本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 这是我的系列教程Python+Dash快速web ...
- python的高性能web应用的开发与测试实验
python的高性能web应用的开发与测试实验 tornado“同步和异步”网络IO模型实验 引言 python语言一直以开发效率高著称,被广泛地应用于自动化领域: 测试自动化 运维自动化 构建发布自 ...
- Bootstrap 是一个用于快速开发 Web 应用程序和网站的前端框架
Bootstrap 是一个用于快速开发 Web 应用程序和网站的前端框架.Bootstrap 是基于 HTML.CSS.JAVASCRIPT 的. 历史 Bootstrap 是由 Twitter 的 ...
- crawler_Docker_解决用 JavaScript 框架开发的 Web 站点抓取
[转载,后续补上实践case] 有了 Docker,用 JavaScript 框架开发的 Web 站点也能很好地支持网络爬虫的内容抓取 [编者的话]Prerender 服务能够为网络爬虫提供预先渲染的 ...
- SSM框架开发web项目系列(二) MyBatis真正的力量
前言 上篇SSM框架环境搭建篇,演示了我们进行web开发必不可少的一些配置和准备工作,如果这方面还有疑问的地方,可以先参考上一篇“SSM框架开发web项目系列(一) 环境搭建篇”.本文主要介绍MyBa ...
随机推荐
- [C语言] 变量和数据类型和整数和字符
1.数据类型和变量: 数据是放在内存中的,明确三件事:数据存储在哪里.数据的长度以及数据的处理方式 int n;数据类型指明了数据的长度和处理方式,变量名指明了数据存储在哪里 2.数据长度:是指数据占 ...
- Q:关于栈的常见问题
对于栈,一个常见的问题是:给定一个序列a0,a1,a2,a3...an依次顺序入栈,在元素顺序入栈的过程中,栈中任意一个元素可以选择是否出栈,则其共有几种出栈的可能,给定的出栈序列中,哪种是不可能的 ...
- Java 学习笔记(2)——基本语句、控制结构
上一篇中简单谈了一下自己对Java的一些看法并起了一个头,现在继续总结java的相关语法.java语法总体上与C/C++一样,所以对于一个C/C++程序员来说,天生就能看懂Java代码.在学习java ...
- sql:PostgreSQL
PostgreSQL sql script: -- Database: geovindu -- DROP DATABASE geovindu; CREATE DATABASE geovindu WIT ...
- CF954I Yet Another String Matching Problem
传送门 每次操作可以把两个字符串中所有同一种字符变成另外一种 定义两个长度相等的字符串之间的距离为:使两个字符串相等所需要操作的次数的最小值 求 \(s\) 中每一个长度为 \(|t|\) 的连续子串 ...
- 插入外置网卡端口顺序混乱--linux系统
本文皆是作者工作学习中的理解或感悟,欢迎大家提出问题,一起讨论!! 一.问题提出 一般的主板上都带有两个网卡接口,linux系统启动后一般命名为eth0,eth1,当然如果我们不对eth0与eth1进 ...
- 用户登陆显示cpu、负载、内存信息
#用户登陆显示cpu.负载.内存信息 #!/bin/bash # hostip=`ifconfig eth0 |awk -F" +|:" '/Bcast/{print $4}'` ...
- Monte Carlo与TD算法
RL 博客:http://blog.sciencenet.cn/home.php?mod=space&uid=3189881&do=blog&view=me&from= ...
- Non-resolvable parent POM for com.*******
场景: 同事新打了一个jar包到私服里面,自己删除了本地对应的中央仓库的依赖包,再次重新下载. 于是我又打开了一个idea的窗口重新引入这个项目,然后重新下载依赖的服务. 结果就一直报这个问题... ...
- iOS9 News 应用
iOS9 News 应用 iOS9 中国区虽然没有 News 应用,但最新的开发工具中是有的,以下是笔者截取的模拟器gif图,供君欣赏: