从Django模型生成JavaScript对象
-
03-07-2019 - |
题
我正在浏览器中执行大量JavaScript工作,并希望在前端具有一些后端功能。具体来说,最好有函数 get()
, save()
, all()
和 count()
可供客户使用。另外,在生成的JavaScript对象中已经可以使用模型的字段列表会很棒。
当前用户是否可以读取或写入记录是我将使用Django身份验证处理的另一个问题。目前,检索将是一个开始。
简而言之,是否有代码可以从Django模型生成JavaScript模型?
感谢。
解决方案
听起来您正在寻找模型和查询集API的完整JavaScript接口。我无法想象这将会完成甚至是一项简单的任务。您不仅需要以某种方式生成模型的JavaScript实例(远远超过JSON序列化提供,因为您还需要方法),但您需要公开可以处理各种DB-API调用的Web服务。我甚至无法想象从哪里开始,安全问题可能太多而无法轻易克服。
替代(并且更简单)的方法是使用各种Django REST模块和JSON序列化之一。您可以对资源执行AJAX GET请求,该请求可以通过一系列查询参数来识别,这些参数等同于链式查询集过滤器。这将返回模型值的JSON表示。然后,您可以修改JavaScript对象并使用重载的AJAX POST请求将更改持久保存回服务器。您将无法访问模型的方法,因此必须重新实现功能,但对模型进行任何更改应该足够简单 - 这基本上相当于使用HTML表单修改数据的JavaScript。
其他提示
您需要数据序列化程序。您可以使用内置序列化程序的django来完成它。它在官方django网站上有记录。 djangoproject_topics-serialization
我已经开始了一个项目,我认为这正是你正在寻找的。你可以找到它
github_bumby_jslib 。
它目前只支持get(),但我希望尽快扩展它。随意提供补丁:)
jslib是一个Django应用程序,旨在简化与Django项目的AJAX集成。
因为我发布了原始问题已经有一段时间了,从那时起Djangoland就有了一些发展。其中最重要的是一个名为Django REST Framework的小型库。我将在一个新项目中使用它,它看起来很漂亮。