从 Django 模型中生成 JavaScript 对象

Posted

技术标签:

【中文标题】从 Django 模型中生成 JavaScript 对象【英文标题】:Generate JavaScript objects out of Django Models 【发布时间】:2010-09-17 03:47:56 【问题描述】:

我正在浏览器中执行大量 javascript 工作,并希望在前端拥有一些后端功能。具体来说,最好让客户端可以使用get()save()all()count() 函数。此外,如果模型的字段列表已经在生成的 JavaScript 对象中可用,那就太好了。

当前用户是否可以读取或写入记录是一个单独的问题,我将使用 Django 的身份验证来处理。目前,检索将是一个开始。

简而言之,有没有可以从 Django 模型生成 JavaScript 模型的代码?

谢谢。

【问题讨论】:

【参考方案1】:

听起来您想JSON encode 您的对象数据。有关数据格式的更多信息,请参阅JSON.org。

【讨论】:

JSON 编码只提供对象数据。它不提供参考模型(或其名称),也不提供任何功能。 :(【参考方案2】:

您需要一个数据序列化器。您可以使用 django 内置的序列化程序来完成。它记录在官方 django 网站上。 djangoproject_topics-serialization

【讨论】:

【参考方案3】:

听起来您正在寻找模型和查询集 API 的完整 JavaScript 接口。我无法想象这会完成,甚至是一项简单的任务。您不仅需要以某种方式生成模型的 JavaScript 实例(比 JSON 序列化提供的要多得多,因为您还需要这些方法),而且您需要公开一个可以处理各种 DB-API 调用的 Web 服务。我什至无法想象从哪里开始,而且安全问题可能太多而难以克服。

另一种(更简单的)方法是使用各种 Django REST 模块和 JSON 序列化之一。您可以对资源执行 AJAX GET 请求,该请求可以通过一系列查询参数来识别,这些参数相当于链式查询集过滤器。这将返回模型值的 JSON 表示。然后,您可以修改 JavaScript 对象并使用重载的 AJAX POST 请求将更改保留回服务器。您将无法访问模型的方法,因此必须重新实现功能,但对模型进行任何更改都应该非常简单 - 这基本上相当于使用 html 表单修改数据的 JavaScript。

【讨论】:

是的,我认为这是正确的方法。不过,也许您想在开始之前阅读jacobian.org/writing/rest-worst-practices。【参考方案4】:

我已经启动了一个项目,我认为它完全符合您的要求。你可以在 github_bumby_jslib。 它目前只支持 get(),但我希望尽快扩展它。随意贡献补丁:)

jslib 是一个 Django 应用程序,旨在简化与您的 Django 项目的 AJAX 集成。

【讨论】:

【参考方案5】:

所以自从我发布最初的问题以来已经有一段时间了,从那时起,Djangoland 有了一些发展。其中最重要的是一个很棒的小库,叫做 Django REST Framework。我将在一个新项目中使用它,它看起来很漂亮。

http://www.django-rest-framework.org

【讨论】:

以上是关于从 Django 模型中生成 JavaScript 对象的主要内容,如果未能解决你的问题,请参考以下文章

如何设置模型实例以在Django中生成确认表单

在 Django 模板中生成 JSON 的陷阱

在 Django 中生成唯一的 slug

在 Laravel 中从数据库创建模型

在 django datetime 上使用 strftime 会在字符串中生成 UTC 时间

Django从Javascript函数发布数据