Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django,移动变量_Python_Django_Middleware - Fatal编程技术网

Python Django,移动变量

Python Django,移动变量,python,django,middleware,Python,Django,Middleware,我有一个标准的django应用程序。在一个视图中(让我们先来命名),我调用了一个HttpResponseRedirect(到第二个视图),但是有一些数据我想传输到第二个视图。要实现这一目标,我有哪些选择 一种是设置一个GET参数,但是这不是一个好的解决方案 我还可以设置一个会话变量,但这也不是最好的解决方案 我还有别的可能性吗?例如,我可以使用一些上下文处理器或类似的东西吗 我的问题可能不包含所有的信息,但我希望有人能给我一个好的提示。我不知道你为什么说会话变量不是最好的解决方案。相反,它们绝对

我有一个标准的django应用程序。在一个视图中(让我们先来命名),我调用了一个HttpResponseRedirect(到第二个视图),但是有一些数据我想传输到第二个视图。要实现这一目标,我有哪些选择

一种是设置一个GET参数,但是这不是一个好的解决方案

我还可以设置一个会话变量,但这也不是最好的解决方案

我还有别的可能性吗?例如,我可以使用一些上下文处理器或类似的东西吗


我的问题可能不包含所有的信息,但我希望有人能给我一个好的提示。

我不知道你为什么说会话变量不是最好的解决方案。相反,它们绝对是这样做的正确解决方案


在第一个视图中,您只需执行
request.session['first_data']=my_data
,在第二个视图中,您只需执行
my_data=request.session.pop('first_data')
我假设第二个视图包含一些参数,这些参数是您想要传递的参数。您应该使用reverse()函数来传递这些参数,它将创建一个url,参数将放在需要它们的地方。例如,如果
second
是一个包含两个参数的函数,则可以执行以下操作:

HttpResponseRedirect( reverse (second, urlconf = "myapp.urls", args = ['foo arg', 2]))

如果要传递的数据与
second
函数的参数不一致,那么会话可能是一个合理的回退-但是您必须问问自己,为什么不呢

希望你不介意,我把你的英语编辑了一点:我们不会在“我有什么选择”这样的短语中使用缩略语。嗨,不,谢谢,我读了更正。我的母语不是英语,所以至少我从中学到了:-)。是的,这个解决方案有效。这是事实,但我想知道我还有没有其他的可能?当然,这种情况经常发生,所以最后我会使用上下文处理器来处理会话变量,但我还是很好奇。我没有发现任何其他可能性。其次,如果您在同一页面上打开了更多实例,我对会话不是很满意。显然,第二个函数知道它需要什么数据。因此,它应该将此信息作为参数,因此您应该通过
反向执行此操作
-会话对于信息的长期缓存很有用,但是对于即时函数调用,不需要进行db命中。不,第二个不知道。这是超越它的。有许多第二类视图,因此逻辑应该超出此范围。如果我使用会话,我可以使用上下文处理器。