用flask开发个人博客—— Flask中的请求对象request
在用廖雪峰的Python教程入门Python-Flask架构,看到其中对Falsk架构的Web框架的解释中出现了未在本地定义的变量request,感到奇怪,遂找到别人的解释:
转载自:https://blog.csdn.net/hyman_c/article/details/52548540
在介绍flask中的request之前,先简单介绍下python中的ThreadLocal对象。ThreadLocal,故名思义,就是线程中的全局变量,最近才接触这个概念,之前在C++和C#中还没遇到过这个东西。首先看下下面的代码:
1 import threading 2 3 localobj=threading.local() 4 5 def threadfunc(name): 6 localobj.name=name 7 print 'localobj.name is %s' %name 8 9 if __name__=='__main__': 10 t1=threading.Thread(target=threadfunc,args=('Hyman',)) 11 t2=threading.Thread(target=threadfunc,args=('liuzhihui',)) 12 t1.start() 13 t2.start() 14 t1.join() 15 t2.join()
localobj就是一个Threadlocal对象,他对于每个线程来说是全局的,但是对于不同线程之间又可以保持不同。而flask中的请求对象request就由是这类对象。在多线程服务器中客户端每建立一个链接,服务器就创建一个线程,每个线程中就会有一个request来表示客户端的链接请求信息。
1 from flask import Flask 2 from flask import request 3 4 app=Flask(__name__) 5 6 7 @app.route('/') 8 def index(): 9 user_agent=request.headers.get('User_Agent') 10 return 'user_agent is %s' %user_agent 11 12 if __name__=='__main__': 13 app.run()
启动浏览器时,输入 localhost:5000:
Github位置:
https://github.com/HymanLiuTS/flaskTs
克隆本项目:
git clone Git@github.com:HymanLiuTS/flaskTs.git
获取本文源代码:
git checkout FL02