在Django中将参数从template1传递给Template2

时间:2015-12-15 14:24:06

标签: python django model-view-controller

我正在使用django开发一个网站,我对我的架构应该如何完成有疑问,因为我不觉得我这样做是正确的。

我的Views.py中有一个返回JSON的API。我有两个模板用于请求我的Views.py(使用AJAX)。

虽然两者都工作正常,我想要做的是从template1传递到template2,同时保存template1中使用的参数以在template2中使用它

我做了一点绘图来解释我正在做的事情enter image description here

我现在在做什么以及我认为不好的是我使用查询字符串从template1重定向到template2,我想在template2中使用而不从服务器传递。你认为我应该使用会话来保存参数吗?这样做的最佳方式是什么?

如果不清楚,我想要的是能够共享我的模板的网址,然后能够初始化我的模板的组成部分(如选择和输入)。

1 个答案:

答案 0 :(得分:0)

如果您想在用户之间共享网址,则无法使用会话保留这些信息 - 超出会话的用户将无法获取信息。在这种情况下,通过GET请求(直接在url中)传递参数是合理的,也不错,因为最终用户最终可以看到数据 - 输入值。

如果你需要将它保存在一个会话中(所以不能将URL发送给你的朋友只是为了在你的上下文中使用它)为什么不在渲染模板时将参数作为上下文参数传递?

    #views.py
    return render(request, 'template2.html', {'args' : args})

    #template2.html
    {% for arg in args %}
    ...

如果不可能(当您没有呈现有权访问数据的模板表单视图时)会话使用似乎只是唯一的方法。然后你可以考虑使用Django messages frameswork而不是vanilla Sessions机制。