Вопрос

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

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

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

Спасибо.

Это было полезно?

Решение

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

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

Другие советы

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

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

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

Это звучит так, как будто ты хочешь Кодирование в формате JSON ваши объектные данные.Видишь JSON.org подробнее о формате данных см. здесь.

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top