在实用函数中使用 Django request.session

2023-12-25

我正在尝试打电话request.session.get('items', {})来自自定义 util 函数util.py.

但在该文件中,request对象不可访问,我可以从views.py 传递请求对象,但我不想这样做。有没有办法在自定义函数(而不是视图/模板)中使用请求对象。

我尝试过从以下位置导入django.http import HttpRequest但这个类没有任何会话变量。 django 初学者,感谢任何帮助,谢谢。

util.py:

def processData(data=None):
   ## get items form  session
   items = request.session.get('items', {})  ## error name 'request' is not defined
   # append with data
   items.update(data)
   return items 

有一个选项允许您使用此包来做到这一点:django-threadlocals https://github.com/benrobster/django-threadlocals。您应该看一下他们的代码,看看它是如何工作的。

Like so:

from threadlocals.threadlocals import get_current_session

def processData(data=None):
    session = get_current_session()
    # Do your stuff here

如果您尝试遵循此方法,请确保您了解什么django-threadlocals做。创建它是因为万一我们想在更深的层使用请求对象的一些数据,并且您不希望通过每个闭包层传递请求对象。

这个问题 https://stackoverflow.com/questions/3227180/why-is-using-thread-locals-in-django-bad也关心我们是否应该使用它,但是答案描述了我们应该使用它的所有原因,所以请看一下。

希望有帮助!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在实用函数中使用 Django request.session 的相关文章

随机推荐