Domanda

Sto eseguendo molto lavoro JavaScript nel browser e vorrei avere alcune di quelle funzionalità di back-end nel front-end. In particolare, sarebbe bello avere le funzioni get () , save () , all () e count () disponibile per il client. Inoltre, sarebbe bello avere l'elenco dei campi del modello già disponibile nell'oggetto JavaScript generato.

Se l'utente corrente può leggere o scrivere i record è un problema separato che affronterò usando l'autenticazione di Django. Per il momento, il recupero sarebbe un inizio.

In breve, esiste un codice che genererebbe un modello JavaScript da un modello Django?

Grazie.

È stato utile?

Soluzione

Sembra che tu stia cercando un'interfaccia JavaScript completa per le API del modello e del queryset. Non riesco a immaginare che questo sarebbe mai stato fatto o addirittura essere un compito semplice. Non solo dovresti in qualche modo generare istanze JavaScript di modelli (molto più di quanto la serializzazione JSON fornisca, dal momento che desideri anche i metodi), ma dovresti esporre un servizio web in grado di gestire ogni tipo di chiamata DB-API. Non riesco nemmeno a immaginare da dove cominciare e i problemi di sicurezza potrebbero essere troppo numerosi per essere superati facilmente.

L'approccio alternativo (e molto più semplice) sarebbe quello di utilizzare uno dei vari moduli REST Django e la serializzazione JSON. È possibile eseguire una richiesta GET AJAX su una risorsa, che può essere identificata da una serie di parametri di query che sarebbero equivalenti ai filtri di queryset concatenati. Ciò restituirebbe la rappresentazione JSON dei valori del modello. È quindi possibile modificare l'oggetto JavaScript e utilizzare una richiesta POST AJAX sovraccaricata per rendere persistenti le modifiche al server. Non avresti accesso ai metodi del modello, quindi la funzionalità dovrebbe essere reimplementata ma apportare qualsiasi modifica a un modello dovrebbe essere abbastanza semplice - Questo è fondamentalmente l'equivalente JavaScript dell'uso di un modulo HTML per modificare i dati.

Altri suggerimenti

È necessario un serializzatore di dati. Puoi farlo con i serializzatori integrati di Django. È documentato sul sito ufficiale di django. djangoproject_topics-serialization

Ho avviato un progetto che penso faccia esattamente quello che stai cercando. Puoi trovarlo a github_bumby_jslib .
Attualmente supporta solo get (), ma spero di estenderlo presto. Sentiti libero di contribuire con le patch :)

jslib è un'applicazione Django che mira a semplificare l'integrazione AJAX con i tuoi progetti Django.

Sembra che tu voglia codifica JSON i tuoi dati oggetto. Vedi JSON.org per ulteriori informazioni sul formato dei dati.

Quindi è passato un po 'di tempo da quando ho pubblicato la domanda originale e da allora ci sono stati numerosi sviluppi a Djangoland. Non da ultimo una grande libreria chiamata Django REST Framework. Lo userò su un nuovo progetto e sembrerà piuttosto kewl.

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top