2008-10-14 25 views
5

Realizo una gran cantidad de JavaScript en el navegador y me gustaría tener parte de esa funcionalidad de back-end en el front-end. Específicamente, sería bueno tener las funciones get(), save(), all() y count() disponibles para el cliente. Además, sería genial tener la lista de campo del modelo ya disponible en el objeto JavaScript generado.Generar objetos de JavaScript de Django Modelos

Si el usuario actual puede leer o escribir los registros es un problema aparte, me ocuparé de usar la autenticación de Django. Por el momento, la recuperación sería un comienzo.

En resumen, ¿hay algún código que genere un modelo JavaScript a partir de un modelo Django?

Gracias.

Respuesta

7

Parece que está buscando una interfaz completa de JavaScript para el modelo y las API de conjunto de consultas. No puedo imaginar que esto se haya hecho alguna vez o incluso que sea una tarea simple. No solo necesitaría generar instancias de modelos de JavaScript (mucho más de lo que ofrece la serialización JSON, ya que también quiere los métodos), sino que debería exponer un servicio web que pueda manejar todo tipo de llamadas DB-API. Ni siquiera puedo empezar a imaginar dónde comenzar y los problemas de seguridad pueden ser demasiado numerosos para superarlos fácilmente.

El enfoque alternativo (y mucho más simple) sería utilizar uno de los diversos módulos Django REST y la serialización JSON. Puede realizar una solicitud AJAX GET en un recurso, que puede identificarse mediante una serie de parámetros de consulta que serían equivalentes a los filtros de conjuntos de consultas encadenados. Esto devolvería la representación JSON de los valores del modelo. A continuación, puede modificar el objeto JavaScript y utilizar una solicitud AJAX POST sobrecargada para conservar los cambios en el servidor. No tendría acceso a los métodos del modelo, por lo que habría que volver a implementar la funcionalidad, pero hacer cualquier cambio en un modelo debería ser lo suficientemente sencillo: básicamente es el equivalente en JavaScript de usar un formulario HTML para modificar los datos.

+0

Sí, creo que este es el enfoque correcto. Tal vez quiera leer http://jacobian.org/writing/rest-worst-practices/, probablemente antes de comenzar. –

0

Parece que quiere JSON encode los datos de su objeto. Consulte JSON.org para obtener más información sobre el formato de datos.

+0

La codificación JSON solo proporciona los datos del objeto. No ofrece el modelo de referencia (o su nombre) ni ninguna funcionalidad. :( – Dimitry

1

He comenzado un proyecto que creo que hace exactamente lo que estás buscando. Puede encontrarlo en github_bumby_jslib.
Actualmente solo es compatible con get(), pero espero extenderlo pronto. Siéntase libre de contribuir parches :)

jslib es una aplicación de Django que tiene como objetivo simplificar la integración de AJAX con sus proyectos de Django.

0

Ha pasado un tiempo desde que publiqué la pregunta original y desde entonces ha habido una serie de desarrollos en Djangoland. No menos importante es una pequeña biblioteca llamada Django REST Framework. Voy a usarlo en un nuevo proyecto y se ve bastante kewl.

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

Cuestiones relacionadas