Django - separazione dal frontend (Modelli)

1

Per farla breve, supponiamo di voler creare una pagina web che consenta agli utenti di vendere auto usate.

Sono un principiante di webdev, quindi perdona la mia ignoranza. Fatto divertente: due mesi fa non sapevo letteralmente nulla, consideravo l'HTML come una reliquia degli anni '90, non più in uso LOL.

  • Mi è stato detto che ho bisogno di qualcosa per il BACKEND e per il FRONTEND
  • Dato che conosco molto bene python, sono andato per django per il back-end
  • Come sapevo letteralmente nulla sul frontend, suggerì il mio amico me AngularJS

Ho qualche dubbio se sto andando nella giusta direzione.

Django è un framework back-end, ma durante i tutorial ho avuto la sensazione che la parte Templates del pattern MVT fosse praticamente il frontend, strongmente dipendente dai Models e Views. Ho passato ore di googling per vari termini e ho trovato questo post su reddit / django - best practice django :

Treat the front end like a separate application. Keep it outside the Django project directory.

         

Quindi con questo approccio (solo per essere sicuro di averti compreso), non stai usando i modelli, giusto? "

  
     

Hai ragione. Non usare affatto i modelli.

Come faccio? Voglio dire, i template usano tutti quei template-tag, come posso sostituire i template di django con il codice angolare? Mi sento come se dovessi usare qualche API REST (come? Struttura REST di django?) Per comunicare il frontend con Backend. Scrivi solo i modelli e le viste e connettiti ad esse utilizzando alcune richieste POST e GET. Come

FrontEnd < --- > API REST < --- > Modelli e viste di Django < --- > Database

Quindi il frontend utilizza la propria logica e invia richieste come

  • OTTENUTO Mi dia tutte le macchine che un utente ha pubblicato
  • Ottieni i dettagli dell'utente
  • POST crea un nuovo utente
  • POST una modifica a una macchina
  • OTTIENE la query per tutte le auto rosse

ecc.

Quindi, un'altra domanda sul frontend. Sono caduto l'Angolare non è una buona scelta. Lo scopo è scrivere App per singola pagina, che chiaramente non sarà. Posso immaginare un utente, interrogando per determinati criteri di macchine e poi aprendo tutte le offerte in schede separate. È possibile utilizzare Angular per il mio caso? Sono perso qui: (

Se decido di attenermi ai Django Teplates, come posso usare AJAX lì? E c'è un modo per creare un ibrido tra app a pagina singola e app multipagina - per seguire in genere più modelli, ma mantenere parti di essi simili a SPA? Per esempio. Un modello principale utilizzato per l'interrogazione delle macchine da esplorare, che non attiverebbe il ricaricamento della pagina, invierebbe invece una richiesta asincrona, visualizza la casella di selezione e quindi visualizza l'elenco delle auto disponibili. Dopo aver fatto clic su una macchina particolare, si apriva una nuova scheda con i dettagli su quella macchina (modello Dettagli).

Apprezzerei molto qualsiasi aiuto su questa separazione frontend / backend.

    
posta Fidd 20.10.2017 - 11:43
fonte

1 risposta

3

Quindi è necessario mostrare diversi stati dell'applicazione: una pagina di destinazione, un elenco di auto, i dettagli di una singola auto, una procedura con un insieme di moduli e prezzi ecc. per quando si acquista effettivamente l'auto, eccetera.

Ci sono due approcci di base: o hanno una singola "pagina", un singolo file HTML con un carico di Javascript che aggiorna costantemente la pagina e mostra le diverse cose che devono essere mostrate, o hanno generato un codice HTML separato per ogni visualizza sul lato server e utilizza i link agli URL per far accedere il browser a ciascuna pagina.

Se scegli il primo, usi qualche framework di frontend come Angular o React e chiedi solo a Django per i dati, tipicamente JSON usando REST (vedi Django REST Framework). Il secondo, usi i modelli di Django.

Questa è la scelta di base: crei l'interfaccia nel browser web e chiami solo il server per i dati, o crei l'interfaccia sul server e chiami il server per le pagine HTML.

Penso che con il tuo livello di esperienza, usare i modelli di Django per creare pagine HTML sia più facile; fare un'app a una sola pagina probabilmente più che raddoppia di ciò che devi imparare, e c'è già tanto. Una pagina web per vendere auto usate può essere realizzata perfettamente utilizzando le viste e i modelli di Django.

Puoi ancora avere qualche Javascript, se necessario, e lasciare che Ajax chiami le viste Django che restituiscono bit di JSON, probabilmente usando il framework Rango di Django.

    
risposta data 20.10.2017 - 11:55
fonte

Leggi altre domande sui tag