【问题标题】:Getting Django ORM data to Javascript for evaluation将 Django ORM 数据获取到 Javascript 进行评估
【发布时间】:2018-10-25 19:44:50
【问题描述】:

我有一个从数据库返回值的 ORM 调用。我将它传递给 HTML 模板,但需要该数据用于 Javascript 调用。所以流程是这样的:

  1. 表单加载并调用 ORM,从数据库中获取值(我们称之为db_data
  2. db_data 被传递给 HTML 模板 return render(request, "foo.html", db_data)
  3. UI 中的用户单击foo.html 中的按钮
  4. 点击按钮时,JS函数set_ui_data()被调用
  5. set_ui_data() 评估用户选择并将 db_data 呈现给 UI

db_data 中的数据提供给set_ui_data() 方法进行评估的正确方法是什么?

【问题讨论】:

  • 转换成json?
  • 谢谢@thebjorn - 不知道这意味着什么。将 ORM 调用转换为 JSON?
  • 不,将数据转换/转储为 json 字符串(因为这是一个有效的 javascript 表达式),即 import json; json.dumps(db_data) 假设 db_data 可以转换为 json。
  • 该死的,得到“不是 JSON 可序列化的”。这看起来也很简单

标签: javascript python jquery django django-forms


【解决方案1】:

您说只有在用户单击按钮后才需要数据(您称之为db_data)。您可以使用异步 (ajax) 请求来实现它。

您的视图可能如下所示:

class FooTemplateView(TemplateView):
    template_name = 'foo.html'

def data_view(request):
    # get data from database here
    db_data = ... something ...

    return JsonResponse(db_data)

在您的模板中,按钮会进行 ajax 调用,可能在 UI 按钮 onClick 事件中使用 $.get("/your/data/url/")(这部分很大程度上取决于您的 UI 设置)。

这样,您的视图data_view 返回的值将在ajax 调用后作为JS 对象提供给您。也许这会为您指明正确的方向。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-24
    • 2018-09-25
    • 1970-01-01
    • 1970-01-01
    • 2016-04-07
    • 1970-01-01
    • 2021-05-20
    • 1970-01-01
    相关资源
    最近更新 更多