【问题标题】:How to pass variables between different view functions in Django如何在Django中的不同视图函数之间传递变量
【发布时间】:2015-10-30 21:57:17
【问题描述】:

一些变量(类对象)需要在不同的视图函数之间共享。每个视图函数都会改变这个对象的属性。该对象是用户特定的,即用户需要登录网页,然后访问不同的网页。我不希望不同的用户共享/更改此对象变量。我能想到的是:

  1. 使用global 在不同的视图函数中声明一个变量。但是,它在多线程的 Django runserver 中运行,当多个用户访问它时,全局变量会被所有用户更改/共享吗?还是这个变量特定于每个用户?

  2. 然而,使用会话,变量是对象,它不是 json 可序列化的。

  3. 将其存储在数据库中,但是,这是对象,不允许存储在数据库中。我也不能腌制。

在不同视图函数之间共享变量同时允许多个用户同时访问服务器的正确方法是什么?

谢谢,

这是我遇到的问题。请稍微解释一下,请不要随便投反对票,谢谢

【问题讨论】:

    标签: python django


    【解决方案1】:

    您说对象是用户特定的。它也是特定于会话的吗?如果用户在他的浏览器中打开一个新选项卡并访问您应用程序中的另一个页面,他会拥有两个不同的对象吗?如果是这样,那么将其存储在会话中是有意义的。您可以使用 pickle 序列化来绕过 JSON(尽管如果对象是用户提供的,它可能会导致不安全感。)

    【讨论】:

    • 当用户在他的浏览器中打开一个新标签时,我希望用户可以访问最新的值(即同一个对象)。我在想我可以将变量存储到数据库中,每次用户访问页面时,它都会查询数据库。但是,我尝试腌制它,但它返回错误。
    猜你喜欢
    • 1970-01-01
    • 2020-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多