首页 > 解决方案 > 页面刷新时停止功能给出新结果 django

问题描述

我有一个函数,它接受输入的选择并从数据库中提供与用户选择匹配的随机对象:

def someFunction():
 if choice == 'Choice1'
  result = Choice1.objects.all.order_by('?')[0]
 elif choice == 'Choice2'
  result = Choice2.objects.all.order_by('?')[0]
 return result

它像这样传递给视图:

def ChoiceView():
context = {
    'Choice': someFunction(),
}
return render(request, 'project/choice.html', context)

我遇到的问题是,因为每次刷新页面时,该函数都会通过设计提供随机对象,因此会给出不同的合格结果。

我想保持函数随机,但是一旦函数运行,我不希望在刷新页面时再次运行它,而是保持原始函数结果保持不变,直到选择参数发生变化,或者它被故意刷新为了获得一组新的结果,或者给定的时间段已经过去等

任何帮助深表感谢。

提前致谢!

标签: djangopython-3.x

解决方案


为了在页面刷新之间保持一些类似的数据相同,您需要将其存储在某个地方。有多种方法可以做到这一点,但一些选项是:

1)将其存储在数据库中。我不知道您的其余代码是什么样的,但实际上将此字段存储在模型中,与用户相关联,并且每次都检索它。

2)将其存储在会话中。易于上手,因为您可以使用request.session. 不像数据库选项那样永久,但会在页面加载之间持续存在。


推荐阅读