如何使用 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 模型在网页上获取动态数据?的主要内容,如果未能解决你的问题,请参考以下文章

第一篇:Django简介

django模型,如何动态设置查询的字段?

我需要在django中动态添加表单文件作为模型实例

django

如何根据用户输入动态更改 django 中的表单(提交前)

Django:如何使用动态(非模型)数据预填充 FormView?