gpt4 book ai didi

python - 如何用django redis存储数据

转载 作者:IT王子 更新时间:2023-10-29 06:14:34 24 4
gpt4 key购买 nike

我在我的 django 项目中使用了 celery 和 redis。

# In tasks.py
@shared_task
def my_func():
r = redis.StrictRedis()
context = {
"my_var1" : afunction(6)
"my_var2" : afunction(10)
}
r.set('this_var', context)

# In views.py
def home(request):
r = redis.StrictRedis()
return render(request, "home.html", r.get('this_var'))

#In home.html
<h1>{{ my_var1 }}</h1>
<h1>{{ my_var2 }}</h1>

其中 afunction() 只是我创建的一个函数,它在将数字作为参数时执行某些操作。此外,我已经将 celery beat、celery 和 redis 设置得很好,因为我已经用其他示例对它们进行了测试,以确保它们可以正常工作。此外,我之前使用过 r.getr.set 其他东西并且它们有效。但是,在 home.html 页面上,我没有看到 my_var1my_var2 的内容,这表明 'this_var' 没有存储我的字典 context。有人可以帮帮我吗?

此外,如果我只是将上下文放在 views.py 中的 home(request) 函数中,一切正常。

最佳答案

那是因为您使用字典调用 redis.set(),而 set 是为处理字符串而设计的。因此,添加到 Redis 的是字典的字符串表示形式。

您需要使用 hmset to 保存字典和 hgetall 检索它。例如:

r.hmset('this_var', context)

return render(request, "home.html", r.hgetall('this_var'))

关于python - 如何用django redis存储数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32261473/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com