flask框架基础总结

一,HTTP协议 HTTPS协议 不同 为什么安全?

(1)http协议是一种网络哟传输协议,规定了浏览器和服务器之间的通信方式。位于应用层(传输信息都是明文方式,不安全,容易被人拦截,篡改)

(2)为了通信安全,使用对称加密方式,

(在发送之前,使用相同的秘匙对数据进行加密和解密)(这种方式虽然在网络中是以密文呈现,但是容易让人拦截破解,也不算安全.)

(3)使用非对称加密方式,

非对称加密包含一组秘匙,公匙和私匙:明文可以用公钥加密,用私钥解密,并且只能用私钥解密,不能用公钥解密;也可以用私钥加密,公钥解密,并且只能有公钥解密。

流程如下

a、浏览器生成一个随机秘钥。

b、浏览器向服务器请求公钥。

c、服务器向浏览器发送它的公钥。

d、浏览器接收服务器发送的公钥,并使用公钥加密随机生成的对称加密秘钥,发送给服务器。

e、服务器接收浏览器发送的数据,用自身私钥解密,得到,对称加密秘钥。

f、至此,浏览器和服务器可以使用对称加密秘钥相互通信。

用这种方式仍然存在隐患,在进行第3步和第4步时候,中间人会在服务器放松公钥给浏览器时候,截取数据,把公钥修改成自己的发送给浏览器,这时浏览器就无法验证公钥的准确性.

(4)使用httos数字证书保证数据安全

数字证书是第三方机构,给网站唯一身份证明。

当浏览器请求公钥时,服务端不单单发送公钥,而是发送包含公钥的数字证书。

浏览器解密时如下:

a、首先查看是否在有效期内,若失效则不再发送随机对称秘钥;

b、找到第三方机构名称,通过对照找到第三发机构公钥,解密数字签名,得到一个hash1值。

c、通过同样的方式,根据服务端网址等信息,使用签名算法,生成hash2.

d、将hash1和hash2,对比,如果相同,则身份验证成功。

e、身份验证成功后,使用同样的机构公钥解密网站公钥。

f、浏览器使用解密后的公钥发送对称秘钥给服务端。

https的主体思想,ip模型上加了ssl层。



二,网络七层塔协议:

七层划分为:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层

物理层:    物理传输、硬件、物理特性(用于俩个硬件之间的通讯)

数据链接层:    定义了如何让格式化数据以进行传输,以及如何让控制对物理介质的访问。这一层通常还提供错误检测和纠正,以确保数据的可靠传输。

传输层:      发送大量数据的时候用,传输数据包(确保了数据的不丢包,但是速度较慢)

网络层:       即路由器,交换价那些具有寻址功能的设备所实现的功能。这一层定义的是IP地址,通过IP地址寻址。所以产生了IP协议。

会话层:      会话层的作用就是建立和管理应用程序之间的通信。 

表示层:    解决不同系统之间的通信语法问题

应用层:    用户使用的都是应用程序,均工作于应用层,互联网是开发的,大家都可以开发自己的应用程序,数据多种多样,必须规定好数据的组织形式 。(主要功能:规定应用程序的数据格式。)

三,format的用法

(1)通过位置:

    print'{0},{1}'.format('chuhao',20)

(2)通过关键字

    print'{name},{age}'.format(age=18,name='chuhao')

    class Person:

        def__init__(self,name,age):

                self.name = name

                self.age = age

        def__str__(self):

            return 'This guy is {self,name},is {self,age} old'                        .fromat(self.self)

(3)通过映射list

a_list = ['chuhao',20,'china']

print'my name is {0[0]},from {0[2]},age is {0[1]}'.format(a_list)

########      my name is chuhao,from china,age is 20

(4)通过映射 dict

    b_dict = {'name':'chuhao','age':20,'province':'shanxi'}

    print'my name is {name}, age is {age},from {province}'.format(**b_dict)

(5)填充与对齐

print'{:>8}'.format('189')

######      189

print'{:0>8}'.format('189')

#####    00000189

print'{:a>8}'.format('189')

#####   aaaaa189

(6)精度与类型f

#保留两位小数

print'{:.2f}'.format(321.33345)

#####  321.33

(7)用来做金额的千位分隔符

print'{:,}'.format(1234567890)

####   1,234,567,890

(8)其他类型 主要就是进制了,b、d、o、x分别是二进制、十进制、八进制、十六进制

print'{:b}'.format(18)    #二进制 10010

print'{:d}'.format(18)#十进制 18

print'{:o}'.format(18)#八进制 22

print'{:x}'.format(18)#十六进制12


四、Django中间件 具体执行流程 有return和没有return区别

1、执行完所有的request方法 到达视图函数。

2、执行中间件的其他方法

3、经过所有response方法 返回客户端

如果其中一个中间件里request方法里return了值,就会执行当前中间件的response方法,然后返回给客户  然后报错,不会执行下个中间件

列如:

MIDDLEWARE = [

#注意CorsMiddleware要配置在CsrfViewMiddleware前

    'corsheaders.middleware.CorsMiddleware',

'django.middleware.security.SecurityMiddleware',

'django.contrib.sessions.middleware.SessionMiddleware',

'django.middleware.common.CommonMiddleware',

'django.middleware.csrf.CsrfViewMiddleware',

'django.contrib.auth.middleware.AuthenticationMiddleware',

'django.contrib.messages.middleware.MessageMiddleware',

'django.middleware.clickjacking.XFrameOptionsMiddleware',

]

五、Flask今天的所学知识点

1,Flask框架属于轻量级框架,只提供最核心的功能.

2,运用flask框架时候

from flask import Flask

'''

__name__:表示当前的模块名字

创建Flask对象,Flask会以传入模块的位置当做家目录

'''

app = Flask(__name__)

@app.route('/')  # 代表首页

def hello_world():  # 视图函数

    return 'Hello World!'  # 返回内容

if __name__ == '__main__':

    app.run()  # 运行程序

浏览器地址:127.0.00.1:5000

3,flask参数

(1)a,    # 配置文件

app.config.from_pyfile('config.cfg')

b,      配置DEBUG参数时候三种方式

字典配置   app.config["DEBUG"] = True

对象上配置    app.debug = True

参数传入配置  app.run(debug=True)

(2)取参时候:

函数中取时:

app.config.get('THST')

current_app.config.get('THST')

函数外:

app.config["TEST"] = 'test'

4,配置路由

1,只需要在函数的装饰器写入

@app.route('/center')

2,重定向

return redirect(url_for('index'))

3,需要定义请求方式的时候(mtehods里面加入允许的请求方式)

@app.route('/login',methods=['POST'])

5,转换器

default:    接受字符串,默认转换器

stirng:    接受字符串,跟默认一样

int:    接受整数

float:    同 int ,但是接受浮点数

uuid:    唯一识别码

path:    和默认的相似,但也接受斜线

用到时候代码如下:

#整数形式,要想改变请求地址中center/后面的参数只需要改变int改为自己允许的形式就好(上面)

@app.route('/center/')     # 代表个人中心页

        def center(uid):    # 视图函数

            return 'your uid %s' % uid     # 返回内容

请求地址:127.0.00.1:5000:center/1


(2)优化转换器(代码如下)

from werkzeug.routing import BaseConverter

#自定义转换器

class MyConverter(BaseConverter):

        def __init__(self, map, re):      

                    super().__init__(map) # 调用父类 

                    self.regex = re # 转换器的正则规则

app.url_map.converters['re'] = MyConverter # 注册

@app.route('/center/') # 代表个人中心页def center(uid): # 视图函数 

             return 'your uid %s' % uid # 返回内容

@app.route('/login/') # 代表登录页

def login(phone): # 视图函数 

             return 'your phone %s' % phone # 返回内容

你可能感兴趣的:(flask框架基础总结)