美文网首页
Python_Flask 基础

Python_Flask 基础

作者: Fizz翊 | 来源:发表于2018-10-08 21:45 被阅读9次

1 flask介绍

一个基于python实现的web开发的框架

2安装flask

Pycharm 专业版新建flask 项目时建立新的虚拟环境

3.基于flask的最小应用

创建flask1.py文件

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
    return 'hello world'
    
if __name__ == '__main__':
    app.run()

运行 右键 ==》 run

(1)初始化

from flask import Flask

app = Flask(__name__)

(2)路由和视图函数

@app.route('/')
def hello():
    return 'hello world'

(3)服务器启动

if __name__ == '__main__':
    app.run()

run()中的参数有

debug = True/False  是否开启调试模式
port 端口
host 主机

4修改启动方式,用命令行方式启动服务

安装插件

pip install flask-script

在flask1.py中添加代码

manager = Manager(app=app) 

后一个app为自定义的flask对象

启动的地方改为

 manager.run()

启动命令为

python flask1.py runserver -h 地址 -p 端口 -d -r

-d 表示debug模式

-r 表示自动重启

5 route 规则

5.1规则

传参路由:

# 1.<id>:默认接受的类型为str
@app.route('/get_id/<id>')
# 2.<string:id>,指定id的类型为str
@app.route('/get_string_id/<string:id>')
# 3.<int:id>,指定id的类型为整型
@app.route('/get_int_id/<int:id>')
# 4.<float:id>,指定id的类型为浮点数
@app.route('/get_float_id/<float:id>')
# 5.<path:path>,指定接受的path为url中的路径
@app.route('/get_path/<path_path>')

5.2methods请求方法

常用的请求类型有一下几种

GET:获取
POST:创建
PUT:修改
DELETE:删除

定义URL的请求类型

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

6蓝图

6.1什么是蓝图

在falsk项目中可以使用Blueprint实现模块化的应用,使用蓝图可以让应用层次更清晰。

蓝图将作用于相同的URL前缀的请求地址,将具有相同前缀的请求都放在一个模块中。

6.2使用蓝图

6.2.1安装蓝图

pip install flask_blueprint

6.2.2实例化蓝图应用

blue = Blueprint('app',__name__)

此处传入了两个参数,第一个是蓝图的名称,第二个是蓝图所在的包或者模块,_name_代表当前模块名或者包名。

这个写在新建的views.py中

6.2.3注册

app.register_blueprint(blue,url_prefix='/app')

此处也传入了两个参数,第一个参数是我们定义初始化定义的蓝图对象,第二个参数url_prefix表示该蓝图下,所有的url请求必须以/app开始,这样对一个模块的Url可以很好的进行统一管理。

这个写在flask1.py中

6.2.3使用蓝图

修改视图上的装饰器,修改为@blue.route('/')

@blue.route('/',methods = ['GET'])
def hello():
    return 'hello'

此方法对应的URL为127.0.0.1:5000/app/

6.2.4url_for 反向解析

语法:

url_for('实例化蓝图应用时的第一个参数.函数名',参数名=value)

定义跳转:

return redirect('/app/index/')
或者
return redirect(url_for('app.index'))

7请求request

服务端在接受到客户端的请求后,会自动创建Request对象

由Flask框架创建,Request对象不可修改

属性:

url:完整的请求地址
path:路由中的路径
method:请求方法
args:GET请求参数
form:POST请求参数

7.1 args

args 是 get 请求参数的包装,是一个ImmutableMultiDict对象,类字典结构对象

数据存储是key-value

7.2 form

form是 post 请求参数的包装, 是一个ImmutableMultiDict对象,类字典结构对象

数据存储是key-value

重点:ImmutableMultiDict是类字典的数据结构,但是区别是可以存在相同的键

从ImmutableMultiDict中获取数据的方式为 dicr['key']或者dict.get('key')或者dict.getlist('key')

前两种只能取出第一个值,getlist可以取出全部的值

8.响应 Response

Response 是由开发者自己创建的

创建方法

from flask import make_response
make_response 创建一个响应,是一个真正的Response对象

格式:

make_response(data,code),其中data是返回的数据内容,code是返回的状态码

例子

@blue.route('/get_response/')
def get_response():
    logint_html = render_template('login.html')
    res = make_response(login_html,200)
    return res

9 .终止/异常捕获

自动抛出异常:abort(状态码)

捕获异常处理:errorhandler(状态码),定义的函数中要包含一个参数,用于接受异常信息

9.1定义终止程序

@blue.route('/make_abort/')
def get_abort():
    abort(400)
    return '终止'

自定义一个状态码在这里抛出

9.2捕获定义的异常

@blue.errorhandler(400)
def handler(exception):
    return '捕获到异常信息:%s'%exception

自定义处理异常的界面

10 Cookie和Session

Cookie和Session的结合使用,一般有两种存储方式:

第一种:session数据保存在哭护短,Flask采用'secure cookie'方式保存session,即session数据是使用base64编码后保存在客户端的cookie中,无需依赖第三方数据库保存session数据

第二种:session数据存储在服务端,分为以下三步骤。

步骤1:客户端发送请求到服务端,服务端校验请求中cookie参数的sessionid值,如果不存在则认为客户端是发起了一个新的会话。

步骤2:如果是新的会话,则服务端会传递给客户端一个cookie,并在cookie中存储一个新的session值,并将相关数据保存在session中。

步骤3:客户端下一次在发送请求时候,请求上下文对象会携带cookie,通过校验cookie中的session值,即可判断是否是同一会话

步骤4:如果校验会话是同一会话,则可以从session中获取到之前保存的数据

10.1Cookie

客户端会话技术,浏览器的会话技术

数据全部存储在客户端中

存储使用的键值对结构进行存储

特性: 1 支持过期时间 2默认会自动携带本网站的cookie 3 不能垮域名 4 不能垮浏览器

创建

cookie是通过服务器创建的Response来创建的

设置:set_cookie('key',value,max_ages='',expires='')

删除,有三种方式

  • 直接手动清空浏览器的cookie
  • delete_cookie('key')
  • set_cookie('key','',expires=0) 重新设置key的值为空,过期时间为0

获取:

request.cookies.get('key')

例子:

1 设置cookie

@blue.route('/setcookie/')
def set_cookie():
    temp = render_template('index.html')
    response = make_response(temp)
    outdate = datetime.datetime.today() + datetime.timedelta(days=30)#设置有效时间
    response.set_cookie('name','zhy',expires=outdate)
    return response

2 删除cookie中的值

@blue.route('/sercookie/')
def set_cookie():
    temp = render_template('index.html')
    response = make_response(temp)
    response.set_cookie('name','',expires=0)#通过set_cookie去删除
    response.del_cookie('name')#del_cookie删除

3 获取cookie中的值

@blue.route('/getcookie/')
def get_cookie():
    name = request.cookies.get('name')
    return name

10.2 session

Flask-session是flask框架的session组件

该组件则支持session保存到多个地方

语法

设置session:

session['key'] = value

读取session:

result = session['key'] 如果内容不存在,则会报异常
result = session.get('key')  如果不存在,将返回None

删除session:

session.clear()

相关文章

  • Python_Flask 基础

    1 flask介绍 一个基于python实现的web开发的框架 2安装flask Pycharm 专业版新建fl...

  • Python_Flask 基础2

    1模版语法 1.1 模版语法主要分为两种: 变量和标签 模版中的变量 : {{ var }} 模版中的标签:{% ...

  • python_flask 分离开发

    目录结构: 内容说明: 控制台输入python upd.py db init 初始化migrate需...

  • python_flask数据库操作

  • 机械设备安装技术

    设备基础种类及应用 垫层基础允许产生沉降:大型储罐 浅基础扩展基础联合基础:轧机独立基础 深基础桩基础:适用于需要...

  • 基础,基础,基础

    如果有人现在问我,JAVA该怎么学,我会告诉他不要急于求成,少看视频,多练,多思考。但说到这里有人可能会反...

  • 【Android】知识点汇总,坚持原创ing

    Android基础 Java基础 Java基础——Java内存模型和垃圾回收机制 语法基础 语法基础——C语法基础...

  • Java 基础

    Java 基础01Java开发入门 Java 基础02Java编程基础 Java 基础03面向对象 Java 基础...

  • 零基础学画画从入门到放弃

    零基础应该怎么学画画?零基础那就从基础开始学啊!基础是什么?造型基础和色彩基础。 造型基础就是用点线面组成起码能让...

  • 面试题汇总

    1.Java基础面试问题 Java基础之基础问题 Java基础之面向对象 Java基础之数据结构 Java基础之I...

网友评论

      本文标题:Python_Flask 基础

      本文链接:https://www.haomeiwen.com/subject/tphsaftx.html