Создание объектов JavaScript из моделей Django - PullRequest
5 голосов
/ 14 октября 2008

Я выполняю большую часть работы JavaScript в браузере и хотел бы иметь некоторые из этих функциональных возможностей бэкэнда во внешнем интерфейсе. В частности, было бы неплохо, чтобы функции get(), save(), all() и count() были доступны для клиента. Кроме того, было бы здорово иметь список полей модели, уже доступной в сгенерированном объекте JavaScript.

Может ли текущий пользователь читать или писать записи - это отдельная проблема, с которой я буду иметь дело, используя аутентификацию Django. В настоящее время поиск будет началом.

Короче говоря, есть ли код, который генерирует модель JavaScript из модели Django?

Спасибо.

Ответы [ 5 ]

8 голосов
/ 15 октября 2008

Похоже, вы ищете полный интерфейс JavaScript для API модели и набора запросов. Я не могу себе представить, что это когда-либо было бы сделано или даже было бы простой задачей. Вам нужно будет не только каким-то образом генерировать экземпляры моделей JavaScript (гораздо больше, чем обеспечивает сериализация JSON, поскольку вам также нужны методы), но вам также потребуется предоставить веб-сервис, который может обрабатывать любые вызовы DB-API. Я даже не могу себе представить, с чего начать, и проблемы безопасности могут быть слишком многочисленными, чтобы их легко было преодолеть.

Альтернативный (и гораздо более простой) подход заключается в использовании одного из различных модулей REST Django и сериализации JSON. Вы можете выполнить запрос AJAX GET для ресурса, который может быть идентифицирован серией параметров запроса, которые будут эквивалентны фильтрам цепочек запросов. Это вернет JSON-представление значений модели. Затем вы можете изменить объект JavaScript и использовать перегруженный запрос POST AJAX, чтобы сохранить изменения на сервере. У вас не будет доступа к методам модели, так что функциональность придется переопределять, но внесение каких-либо изменений в модель должно быть достаточно простым - это в основном эквивалент JavaScript для использования формы HTML для изменения данных.

1 голос
/ 27 января 2010

Я начал проект, который, я думаю, делает именно то, что вы ищете. Вы можете найти его на github_bumby_jslib .
В настоящее время он поддерживает только get (), но я надеюсь, что это скоро будет расширено. Не стесняйтесь вносить исправления:)

jslib - это приложение Django, призванное упростить интеграцию AJAX с вашими проектами Django.

1 голос
/ 14 октября 2008

Вам нужен сериализатор данных. Вы можете сделать это с помощью встроенных в сериализаторы django. Это задокументировано на официальном сайте django. djangoproject_topics-сериализации

0 голосов
/ 24 июля 2015

Прошло много времени с тех пор, как я опубликовал исходный вопрос, и с тех пор в Джанголанде произошел ряд событий. Не в последнюю очередь это отличная небольшая библиотека под названием Django REST Framework. Я буду использовать его в новом проекте, и он выглядит довольно странно.

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

0 голосов
/ 14 октября 2008

Похоже, вы хотите JSON кодировать данные вашего объекта. См. JSON.org для получения дополнительной информации о формате данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...