用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

posted @ 2018-06-12 16:25  STUqza  阅读(189)  评论(0编辑  收藏  举报