- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用 Djago SessionWizardView将调查应用程序划分为多个页面。下面的代码旨在从 PATH_ONE_IMAGES
中随机选择一张图像。在每个步骤上列出,将其显示给用户,然后将其从列表中删除,这样就无法再次选择它,直到所有图像都消失为止。
这工作正常,但是当我在同一个浏览器中重新访问调查时 PATH_ONE_IMAGES
尽管我在开始时重新初始化它,但它仍然是空的。如果我删除浏览器历史记录或者每次使用不同的浏览器,它都可以正常工作,但是当我使用相同的浏览器重新访问应用程序时,我会不断收到以下错误。
IndexError at /surveyone/
list index out of range
我只是在学习如何使用 session 变量,但我认为通过重新初始化 PATH_ONE_IMAGES
就像我在 SessionWizardView
的顶部所做的那样包含所有 9 个 jpg每次都会“重新填充”该列表。
PATH_ONE_IMAGES = self.request.session.get('path_one_images', ['P1D1.jpg', 'P2D2.jpg', 'P3D3.jpg', 'P4D4.jpg', 'P5D5.jpg', 'P6D6.jpg', 'P7D7.jpg', 'P8D8.jpg', 'P9D9.jpg'])
这不对吗?
从下面的调试脚本中,我可以看到第一次使用“全新”浏览器访问应用程序时 PATH_ONE_IMAGES
里面存放了 9 件元素。
logger.debug('\n\nThis is the available list of PATH_ONE_IMAGES in 5: %s', PATH_ONE_IMAGES)
然后我选择其中一个 PATH_ONE_IMAGES
随机地,将其显示给用户,然后将其从列表中删除。
first_image = random.choice(PATH_ONE_IMAGES)
PATH_ONE_IMAGES.remove(first_image)
context['display_image'] = first_image
我的问题是,当我使用同一个浏览器第二次访问时,列表是空的,即使我在顶部重新初始化它也是如此。
问题:如何重新填充我的 PATH_ONE_IMAGES
每次用户重新访问应用程序时都列出,即使使用相同的浏览器?
如果我使用了错误的术语,我深表歉意,希望您能理解我的意思。
注意:我需要存储PATH_ONE_IMAGES
作为 session 变量由于 an issue I had previously with using Global variables and Multi-threaded processing .
我的代码
class SurveyWizardOne(SessionWizardView):
def get_context_data(self, form, **kwargs):
context = super(SurveyWizardOne, self).get_context_data(form, **kwargs)
step = int(self.steps.current)
PATH_ONE_IMAGES = self.request.session.get('path_one_images', ['P1D1.jpg', 'P2D2.jpg', 'P3D3.jpg', 'P4D4.jpg', 'P5D5.jpg', 'P6D6.jpg', 'P7D7.jpg', 'P8D8.jpg', 'P9D9.jpg'])
images = self.request.session.get('images', [])
slider_DV_values = self.request.session.get('slider_DV_values', [])
if step in range (5, 19):
self.request.session['path_one_images'] = PATH_ONE_IMAGES
self.request.session['images'] = images
self.request.session['slider_DV_values'] = slider_DV_values
if step == 5:
logger.debug('\n\nThis is the available list of PATH_ONE_IMAGES in 5: %s', PATH_ONE_IMAGES)
first_image = random.choice(PATH_ONE_IMAGES)
PATH_ONE_IMAGES.remove(first_image)
context['display_image'] = first_image
images.insert(0, first_image)
self.request.session['first_image'] = images[0]
self.request.session.get('first_image')
elif step == 6:
logger.debug('\n\nThis is the available list of PATH_ONE_Images in 6: %s', PATH_ONE_IMAGES)
second_image = random.choice(PATH_ONE_IMAGES)
PATH_ONE_IMAGES.remove(second_image)
context['display_image'] = second_image
images.insert(1, second_image)
self.request.session['second_image'] = images[1]
self.request.session.get('second_image')
....
....
任何帮助,一如既往,非常感谢
最佳答案
您应该仅在向导的第一步初始化您的变量 path_one_images
:
....
step = int(self.steps.current)
if step == 0:
self.request.session['path_one_images'] = ['P1D1.jpg', 'P2D2.jpg', 'P3D3.jpg', 'P4D4.jpg', 'P5D5.jpg', 'P6D6.jpg', 'P7D7.jpg', 'P8D8.jpg', 'P9D9.jpg']
PATH_ONE_IMAGES = self.request.session.get('path_one_images', [])
images = self.request.session.get('images', [])
slider_DV_values = self.request.session.get('slider_DV_values', [])
if step in range (5, 19):
# You don't need to reinit here your session variable
# self.request.session['path_one_images'] = PATH_ONE_IMAGES
....
也许您需要对 images
和 slider_DV_values
变量采用相同的方法。
关于python - 如何在 Django SessionWizardView 中重新初始化 session 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29267725/
我是 Spring 新手,这就是我想要做的事情: 我正在使用一个基于 Maven 的库,它有自己的 Spring 上下文和 Autowiring 字段。 它的bean配置文件是src/test/res
我在我的测试脚本中有以下列表初始化: newSequenceCore=["ls", "ns", "*", "cm", "*", "ov", "ov", "ov", "ov", "kd"] (代表要在控
这个问题在这里已经有了答案: 关闭 11 年前。 Possible Duplicate: Class construction with initial values 当我查看 http://en.
我得到了成员变量“objectCount”的限定错误。编译器还返回“ISO C++ 禁止非常量静态成员的类内初始化”。这是主类: #include #include "Tree.h" using n
我有如下所示的a.h class A { public: void doSomething()=0; }; 然后我有如下所示的b.h #include "a.h" class b: publi
我需要解析 Firebase DataSnapshot (一个 JSON 对象)转换成一个数据类,其属性包括 enum 和 list。所以我更喜欢通过传递 DataSnapshot 来手动解析它进入二
我使用 JQuery 一段时间了,我总是使用以下代码来初始化我的 javascript: $(document).ready( function() { // Initalisation logic
这里是 Objective-C 菜鸟。 为什么会这样: NSString *myString = [NSString alloc]; [myString initWithFormat:@"%f", s
我无法让核心数据支持的 NSArrayController 在我的代码中正常工作。下面是我的代码: pageArrayController = [[NSArrayController alloc] i
我对这一切都很陌生,并且无法将其安装到我的后端代码中。它去哪里?在我的页脚下面有我所有的 JS? 比如,这是什么意思: Popup initialization code should be exec
这可能是一个简单的问题,但是嘿,我是初学者。 所以我创建了一个程序来计算一些东西,它目前正在控制台中运行。我决定向其中添加一个用户界面,因此我使用 NetBeans IDE 中的内置功能创建了一个 J
我有 2 个 Controller ,TEST1Controller 和 TEST2Controller 在TEST2Controller中,我有一个initialize()函数设置属性值。 如果我尝
据我所知, dependentObservable 在声明时会进行计算。但如果某些值尚不存在怎么办? 例如: var viewModel ={}; var dependentObservable1 =
我正在阅读 POODR 这本书,它使用旧语法进行默认值初始化。我想用新语法实现相同的功能。 class Gear attr_reader :chainring, :cog, :wheel de
我按照 polymer 教程的说明进行操作: https://www.polymer-project.org/3.0/start/install-3-0 (我跳过了可选部分) 但是,在我执行命令“po
很抱歉问到一个非常新手的Kotlin问题,但是我正在努力理解与构造函数和初始化有关的一些东西。 我有这个类和构造函数: class TestCaseBuilder constructor(
假设我们有一个包含 30 列和 30 行的网格。 生命游戏规则简而言之: 一个小区有八个相邻小区 当一个细胞拥有三个存活的相邻细胞时,该细胞就会存活 如果一个细胞恰好有两个或三个活的相邻细胞,那么它就
我是 MQTT 和 Android 开放附件“AOA” 的新手。在阅读教程时,我意识到,在尝试写入 ByteArrayOutputStream 类型的变量之前,应该写入 0 或 0x00首先到该变量。
我有 2 个 Controller ,TEST1Controller 和 TEST2Controller 在TEST2Controller中,我有一个initialize()函数设置属性值。 如果我尝
我有一个inotify /内核问题。我正在使用“inotify” Python项目进行观察,但是,我的问题仍然是固有的关于inotify内核实现的核心。 Python inotify项目处理递归ino
我是一名优秀的程序员,十分优秀!