当前位置:   article > 正文

flask的上下文、run的管理机制、页面的过滤器_flask run args

flask run args

flask的一些基础知识点

1、上下文(相当于容器,保存运行过程中的信息)

1.1请求上下文

请求上下文:
	1.request包含args,data,cookie等
    2.session用于存储,敏感的用户信息
  • 1
  • 2
  • 3

request中包含很多的属性,可以通过‘.’的方式将其取出,主要有method(请求方式)、form(表单数据)、args(传递的参数)、data(请求正文)、file(传递的文件)等
注:request传递的文件可以通过request.files.get(‘文件名’)取出,因为这样不会报错,没有该文件的话返回的是None,还可以将其.save(‘路径’)指定保存路径
session存储方式:
1、直接存在客户端的cookie中
2、存在服务端,mysql,redis,mongodb……

#设置cookie,设置生命周期
@app.route('/set_cookie',methods=['GET','POST'])
def set_cookie():
    response_obj = make_response()
    response_obj.headers['X-Parachutes'] = 'parachutes are cool'
    response_obj.set_cookie('name','sjl',max_age=3600)
    return response_obj
#获取cookie
@app.route('/get_cookie')
def get_cookie():
    print(request.cookies)
    #取值,没有默认为None
    print(request.cookies.get('age','找不到'))
    return 'ok'
#设置session  
@app.route('/set_session')
def set_session():
    session['hello']='python'
    return 'ok'
#获取session
@app.route('/get_session')
def get_session():
    print(session.get('hello'))
    return 'ok'
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

在设置session的时候必须要设置app.secret_key

1.2 应用上下文

应用程序中的变量
有current_app
  • 1
  • 2
#为current_app赋值
@app.route('/getname')
def app_info():
    current_app.test='python'
    return current_app.name
#取出刚才赋值的内容
@app.route('/newname')
def app_info_new():
    return current_app.test
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

current_app和g都属于应用上下文对象。
current_app:表示当前运行程序文件的程序实例。

g:处理请求时,用于临时存储的对象,每次请求都会重设这个变量。比如:我们可以获取一些临时请求的用户信息。

当调用app = Flask(name)的时候,创建了程序应用对象app;
request 在每次http请求发生时,WSGI server调用Flask.call();然后在Flask内部创建的request对象;
app的生命周期大于request和g,一个app存活期间,可能发生多次http请求,所以就会有多个request和g。
最终传入视图函数,通过return、redirect或render_template生成response对象,返回给客户端。
区别:
请求上下文:保存了客户端和服务器交互的数据。
应用上下文:在flask程序运行过程中,保存的一些配置信息,比如程序文件名、数据库的连接、用户信息等。

run的管理机制

首先将app=Flask(name)的app传给管理器

manger = Manager(app)
  • 1

然后将入口方法改为

if __name__=='__main__':
    manger.run()
  • 1
  • 2

即可
然后我们可以在终端(在工作空间中)通过
python 该文件名.后缀 runserver --port+(端口号,默认5000)
启动该文件
也可以通过python 该文件名.后缀 runserver --help查看使用的方法
在这里插入图片描述

3、页面的过滤器

@app.route('/index')
def index():
    dict1 = {
        'name':'zhang',
        'age':18
    }
    list1=[4,5296,126,12,3,1,85,52]
    return render_template('index.html',list1=list1,dict1=dict1)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

上述代码块,我向index.html页面传递了两个参数
然后在html页面我进行如下操作

{{ dict1['name'] }}//获取name的值,zhang
{{ dict1.name }}//获取name的值,zhang

<h1>过滤器</h1>
{#{{ 变量|过滤器 }}#}
{{ dict1.name|upper|reverse}}//获取name的值,并且全部大写然后反向输出,GNAHZ
{{ '<div>hello</div>'| upper }}//大写,<DIV>HELLO</DIV>
{{ '<div>hello</div>'| safe | upper }}//大写,标签起作用,HELLO
{{ list1 | sort }}//排序
{{ list1 | length }}//列表长度
{{ list1 | sum }}//列表求和
{{ list1 | first }}//列表第一个数字
{{ list1 | last }}//列表最后一个数字
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/448815
推荐阅读
相关标签
  

闽ICP备14008679号