Django 存储"State"和对象以跨多个视图使用



我是OOP和Web开发的新手,并且习惯了对象的定义等来保存数据。我在创建基本的 html 网站和使用 React 和 J 进行一些状态管理方面也有一点经验。然而,目前我目前正在创建一个Django网站来练习我的OOP技能和Django技能,我遇到了一些障碍。

当我的网站主页加载时,会提取 API,该 API 从服务器获取 JSON,其中包含标题、作者和发布日期等详细信息。我遍历 JSON 并创建一系列包含该信息的 Post(( 对象。然后将 Post 对象(此时包含在列表中(传递到我 views.py 函数中的 render 方法中,然后迭代,title 属性作为链接显示在 html 页面上。我想以某种方式在后台将其他属性(作者和发布日期(存储为元数据。信息始终来自 API,我不想将其存储在数据库上的模型中。我想在其他视图中使用该元数据信息等(我希望它至少在用户在主页上并且当他单击对象创建的链接时可用,我希望将整个 Post 对象信息转移到新页面(。但是,现在,一旦呈现页面,对象就不再存在,因为创建它们的方法已经完成运行。

Django,OOP或Web开发的总体基本概念我没有掌握,以便我可以在我的Django网站上拥有某种"状态"?特别是我希望能够在视图之间"传递"临时信息。我正在考虑创建一个类(类似于 ContentManager(来管理所有状态,但我不知道它会驻扎在哪里。就观点而言,一切似乎都非常静态。我使用过像React这样的Web框架来管理状态。所以也许这就是我得到这个想法的地方。

这似乎是一个简单的基本概念,但很难通过谷歌搜索找到我想做什么。大多数事情都谈到使用模型。无论如何,漫无边际。提前感谢您的帮助!

您可以使用session来实现此目的。例如:

def load_api(request):
data = requests.get('/your/api')
# handle your API response some how
meta_data = data.get('meta_data')
request.session['meta_data'] = meta_data
return HttpResponse('Your View')

在另一个视图中显示该meta_data

def show_meta_data(request):
data = request.session.get('meta_data')
return render(request, 'template', data)

此外,您还可以从会话中删除该元数据:

del request.session['meta_data']

或者django.contrib.auth.logout()它将被清除,因为它使用flush.

最新更新