如何使用 Django 模型在网页上获取动态数据?
Posted
技术标签:
【中文标题】如何使用 Django 模型在网页上获取动态数据?【英文标题】:How to have dynamic data on webpage using Django models? 【发布时间】:2021-12-10 10:52:21 【问题描述】:(我是 django 初学者) 我有一个要求,在我的网页中使用 Django 模型的下拉菜单需要具有来自第三方服务器的实时/动态数据。
例如。当前模型数据是 emp1,emp2 但如果第三方服务器添加了 emp3,那么当用户刷新网页时,我应该能够在我的网页中显示 emp1,emp2,emp3。
如何使用 django 模型实现这一点? (我知道我们可以通过直接从网页进行 ajax 调用来在没有 Django 模型的情况下做到这一点,但由于安全限制我不能这样做,所以我必须在后端获取这些数据,而目前我只有 Django 模型能够在服务器启动时获取我的数据库中的数据一次,而不是在第三方服务器更新其数据库时获取)。
【问题讨论】:
请分享您已经尝试过的代码。 【参考方案1】:我想我找到了解决我陷入的这种特定情况的答案。我会尽力在这里回答这个问题,以便对其他人有所帮助:
我之前在views
函数中的问题代码:
for key in sorted(myvar):
value = City(name=key)
value.save()
for items in myvar[key]:
value2 = Country(name=items,site=value)
value2.save()
所以上面的代码基本上是根据存储在 myvar 变量中的数据更新我的名为 City 和 Country 的模型。
但是,每次页面加载时,我都会更新模型(以便模型具有最新和最新的数据数据)。但这使得当多个用户使用网页时模型数据不一致。例如,当用户 A 加载网页时,他或她获得了一些内容,现在当用户 B 加载网页时,他或她获得了一些其他内容,因为我的 views.py 已使用 @987654323 中可用的最新数据更新了模型@。这对用户 B 来说不是问题,但对于依赖不再存在的旧模型数据的用户 A 来说是个问题。
我是如何解决这个问题的:
通过检查我添加的数据是否已经存在于模型中,我将仅在数据不存在时更新我的模型(我正在使用.exists()
函数验证这一点)。
for key in sorted(myvar):
if City.objects.filter(name = key).exists():
pass
else:
value = City(name=key)
value.save()
for items in myvar[key]:
value2 = Country(name=items,site=value)
value2.save()
这样,至少只有在需要根据myvar
中的新内容更新模型时,模型数据才会更新。
【讨论】:
感谢@Dharman 的编辑 不客气。对不起,它分为两部分。请注意,我们的目标是尽可能减少 Stack Overflow 上的噪音。这包括 cmets。我知道你想表现得很好,但这里没有必要这样做,因为我们试图让它完全专业。我会在几分钟内删除这两个 cmets。以上是关于如何使用 Django 模型在网页上获取动态数据?的主要内容,如果未能解决你的问题,请参考以下文章