2017-05-23 17 views
0

据我所知,flask.g为当前的请求上下文提供临时存储(即使它在技术上如here所述的应用程序上下文)。在请求处理程序期间访问g.my_data将确保my_data用于当前请求。 Django是否有与此相同的东西?Django等价于Flask g?将数据存储在flask.g vs flask.request中?

在我的实验中,传递到视图函数中的Django的request对象可以使用与flask.g相同的对象。我可以简单地使用request.my_data并确保my_data用于当前请求。

注意到,我尝试使用flask.request类似于我使用flask.g,具有相同的结果。这引出了问题flask.g提供了什么比flask.request,只是安心的flask.request属性不会被覆盖?我在实际的请求处理程序(瓶)或视图函数(django)和中间件(django)或@before_request(瓶)处理程序之间共享数据。

This source似乎建议将数据放在请求上。

this source一样。

这导致我回答以下第1号是,但更想知道数字2?

TLDR:

  1. 能Django的request可等同用于flask.g
  2. 可以使用flask.request等效于flask.g,或flask.g优于flask.request的好处是什么?

回答

1

Django具有context_data和get_context()方法。要访问这些数据,请像这样覆盖视图中的get_context_data()方法。

def get_context_data(self, **kwargs): 
    context = super(NameOfView, self).get_context_data(**kwargs) 
    context.update(...) 
    return context 
+0

我不认为你理解我的用例。我想在中间件处理程序中设置数据,然后在我的视图处理程序中访问它。我打算将它添加到请求对象,因为这是django用request.user做的。 – Panda