Django Framework
In questo capitolo, discuteremo in dettaglio di Django Framework.
Django è un framework Web MVT utilizzato per creare applicazioni Web. L'enorme framework web Django viene fornito con così tante "batterie incluse" che gli sviluppatori spesso si stupiscono di come tutto riesca a lavorare insieme. Il principio alla base dell'aggiunta di così tante batterie è di avere funzionalità web comuni nel framework stesso invece di aggiungerle come libreria separata.
Uno dei motivi principali alla base della popolarità del framework Django è l'enorme comunità di Django. La comunità è così vasta che è stato dedicato un sito Web separato in cui gli sviluppatori di tutti gli angoli hanno sviluppato pacchetti di terze parti tra cui autenticazione, autorizzazione, sistemi CMS basati su Django a tutti gli effetti, componenti aggiuntivi di e-commerce e così via. C'è un'alta probabilità che ciò che stai cercando di sviluppare sia già sviluppato da qualcuno e devi solo inserirlo nel tuo progetto.
Perché dovresti usare Django?
Django è progettato in modo tale da incoraggiare gli sviluppatori a sviluppare siti Web in modo veloce, pulito e con un design pratico. L'approccio pratico di Django per portare a termine le cose è dove si distingue dalla massa.
Se hai intenzione di creare un'app altamente personalizzabile, come il sito Web di social media, Django è uno dei migliori framework da considerare. Il punto di forza di Django sta nella sua interazione tra gli utenti o nella sua capacità di condividere diversi tipi di media. Uno dei grandi vantaggi di django è la sua capacità di utilizzare un ampio supporto basato sulla comunità che ti offre plug-in di terze parti altamente personalizzabili pronti per l'uso nelle tue applicazioni.
Di seguito sono riportati i dieci principali motivi per scegliere Django per lo sviluppo web:
Pitone
Python è probabilmente uno dei linguaggi di programmazione più facili da imparare a causa dei suoi semplici costrutti del linguaggio, della struttura del flusso e della sintassi facile. È versatile e gestisce siti Web, applicazioni desktop e applicazioni mobili incorporate in molti dispositivi e viene utilizzato in altre applicazioni come linguaggio di scripting popolare.
Batterie incluse
Django viene fornito con librerie comuni che sono essenziali per creare funzionalità comuni come il routing URL, l'autenticazione, un ORM (object-relational mapper), un sistema di modelli e le migrazioni dello schema db.
Amministratore integrato
Django ha un'interfaccia di amministrazione incorporata che ti consente di gestire i tuoi modelli, i permessi degli utenti / gruppi e di gestire gli utenti. Con l'interfaccia del modello in atto, non è necessario un programma di amministrazione del database separato per tutte le funzioni del database tranne quelle avanzate.
Non ti intralcia
La creazione di un'applicazione Django non aggiunge boilerplate e funzioni non necessarie. Non ci sono importazioni obbligatorie, librerie di terze parti e nessun file di configurazione XML.
Scalabile
Django si basa sul modello di progettazione MVC. Significa che tutte le entità come db (database), codice back-end e front-end sono entità individuali. Django ci permette di separare il codice dal media statico incluse immagini, file, CSS e JavaScript che compongono il tuo sito.
Django supporta un elenco completo di librerie di terze parti per server web, caching, gestione delle prestazioni, clustering e bilanciamento. Uno dei vantaggi offerti da Django è il supporto per le principali applicazioni e servizi di posta elettronica e di messaggistica come ReST e OAuth.
Testato in battaglia
Django è stato creato per la prima volta nel 2005. Dopo 12 anni di crescita, Django ora non solo gestisce siti Web di pubblicazione di notizie, ma gestisce anche tutte o parte delle principali aziende globali come Pinterest, Instagram, Disqus, Bitbucket, EventBrite e Zapier. Questo lo rende un framework web robusto e affidabile con cui lavorare.
Enorme supporto per i pacchetti
A causa del suo ampio supporto da parte della comunità e dell'enorme rete di sviluppatori, c'è un'alta possibilità che qualsiasi cosa tu intenda fare possa essere stata fatta prima. Una vasta comunità internazionale di sviluppatori contribuisce alla comunità rilasciando i loro progetti come pacchetti open-source.
Uno di questi repository di questi progetti è il sito del pacchetto Django. Attualmente, i pacchetti Django elencano oltre 3400 più app, siti e strumenti Django riutilizzabili da utilizzare nei nostri progetti Django.
Sviluppato attivamente
Uno dei maggiori rischi associati al progetto open source è la sua sostenibilità. Non possiamo essere sicuri che duri a lungo.
Non c'è rischio con Django dato che ha 12 anni. Le sue versioni coerenti, le versioni più recenti / migliori e la comunità attiva crescono ogni giorno con un grande team di collaboratori volontari che mantiene e migliora la base del codice ogni giorno.
Rilasci stabili
I progetti di software open source come Django sono, in molti casi, attivamente sviluppati e più sicuri del software proprietario della concorrenza, poiché molti sviluppatori lo sviluppano e lo testano ogni giorno. Tuttavia, lo svantaggio di un progetto software open source è l'assenza di una base di codice stabile per uno sviluppo commercialmente sostenibile.
In Django, abbiamo versioni del software con supporto a lungo termine (LTS) e un processo di rilascio definito come mostrato nell'immagine seguente:
Documentazione di prima classe
Fin dal primo rilascio, gli sviluppatori di Django si sono assicurati che fossero disponibili documenti completi adeguati e che i tutorial fossero facilmente comprensibili.
Chi usa Django?
A causa della forza unica di Django, ci sono più siti web popolari che sono costruiti con Python sopra il framework Django. Di seguito sono riportati alcuni dei principali siti che sono completamente o parzialmente costruiti sulla base di Django.
Disqus
È uno dei siti di hosting di commenti di blog più preferiti a livello globale. È facile da integrare con i più diffusi CMS (sistemi di gestione dei contenuti) come WordPress e molti altri tramite Disqus. Gestendo una base di utenti di oltre 50 milioni, Django è in grado di soddisfare i proprietari del sito per raggiungere le loro comunità.
La cipolla
Il sito web di Onion, che fornisce una sede online per il loro giornale satirico, Django fornisce la struttura per questo.
Bitbucket
Bitbucket è come GitHub, un servizio di hosting di repository di controllo della versione. L'unica differenza tra Bitbucket e GitHub è che Bitbucket ospita repository mercurial mentre GitHub ospita repository git. Poiché milioni di utenti sono associati a Bitbucket, e tutti i servizi forniti da bitbucket (come creare un repository, inviare il codice, aggiungere collaboratori, commit, pull request, ecc.) Devono essere stabili. Django è responsabile della gestione del sito bitbucket.
Instagram è un'app di social networking creata appositamente per chi ama condividere foto e video con tutti i propri amici. Attualmente ci sono tantissime celebrità su Instagram per stare più vicino ai loro fan. Il framework Django esegue anche Instagram.
Mozilla Firefox
Il secondo browser più utilizzato al mondo dopo Google Chrome è il browser Mozilla. Ora la pagina della guida di Mozilla è costruita con il framework Django.
Milioni di utenti in tutto il mondo scoprono le loro nuove idee e ispirazione da Pinterest. Pinterest utilizza il framework Django (modifica apportata secondo i loro requisiti) per eseguirlo.
NASA
Il sito web ufficiale della National Aeronautics and Space Administration è un luogo in cui milioni di utenti possono visitare e controllare le notizie, le immagini, i video e i podcast forniti dalla prima agenzia. Django sviluppa alcune parti specifiche del sito web ufficiale della NASA.
Il Washington Post
Se c'è un giornale influente al mondo, è certamente il Washington Post. Il sito web del Washington Post è una fonte di notizie online estremamente popolare per accompagnare il loro quotidiano. La sua enorme quantità di visualizzazioni e traffico è stata facilmente gestita dal framework web Django.
Regali Reddit
Il popolarissimo sito web di Reddit ha lanciato una piattaforma di scambio di regali e incontri online anonima chiamata Reddit Gifts. Il sito collega utenti da tutto il mondo e facilita lo scambio di regali tra di loro. Il framework web Django alimenta le sue funzionalità.
Prezi
Prezi è un'alternativa basata su cloud a Microsoft PowerPoint costruita sul framework Django. Il sito fornisce una tela virtuale che può essere manipolata e ingrandita e rimpicciolita. Ciò fornisce l'intera visualizzazione della presentazione anziché le singole diapositive.
Installazione e creazione di un progetto e di un'app Django
Prima di installare Django, dobbiamo assicurarci che Python sia installato. Supponendo che tu stia usando virtualenv, un semplice pip install django dovrebbe essere sufficiente.
Installazione dell'ambiente virtuale e Django
Di seguito è riportato il processo per installare l'ambiente virtuale e Django nel tuo ambiente Windows:
Per verificare se Django è installato correttamente, digita il codice riportato di seguito -
Creazione del progetto Django
Una volta completata l'installazione, dobbiamo creare un progetto Django.
L'esecuzione del comando seguente nella tua macchina Windows creerà il seguente progetto django:
django-admin startproject my_project_name
Digitando dir mostrerà un nuovo file e una nuova directory come mostrato sopra.
manage.py- manage.py è un file Python eseguibile da riga di comando che è solo un wrapper per django-admin. Ci aiuta a gestire il nostro progetto che è implicito anche nel suo nome.
Con questo, ha creato una directory chiamata, myFirstDjangoProjectall'interno di myFirstDjangoProject che rappresenta la radice di configurazione per il nostro progetto. Cerchiamo di esplorarlo molto più a fondo.
Configurazione di Django
Chiamando la directory myFirstDjangoProject "root di configurazione", intendiamo che questa directory contiene i file necessari per la configurazione generale del nostro progetto Django. Praticamente tutto ciò che è al di fuori di questa directory sarà focalizzato esclusivamente sulla "logica di business" associata ai modelli, alle viste, ai percorsi, ecc. Del progetto. Tutti i punti che collegano il progetto insieme porteranno qui.
__init__.py - Questo è vuoto e cambia la directory in un pacchetto Python importabile.
settings.py - Come suggerisce il nome, è il luogo in cui verrà impostata la maggior parte degli elementi di configurazione.
urls.py - Gli URL sono impostati con urls.py. Con questo, non dobbiamo scrivere esplicitamente ogni URL per il progetto in questo file. Tuttavia, dobbiamo dire a Django dove sono stati dichiarati gli URL (cioè, dobbiamo collegare altri URL in urls.py).
Wsgi.py - Questo serve per aiutare l'applicazione in produzione ed è simile ad altre applicazioni come Flask, Tornado, Pyramid che espone alcuni oggetti “app”.
Impostazione delle impostazioni
Uno sguardo all'interno di settings.py rivelerà le sue dimensioni considerevoli, e queste sono solo le impostazioni predefinite. Altre cose di cui dobbiamo occuparci sono i file statici, il database, i file multimediali, l'integrazione nel cloud o altre dozzine di modi in cui un progetto Django può essere configurato. Comprendiamo alcuni punti menzionati nel file settings.py -
BASE_DIR- Questo è utile per individuare i file. All'interno del file setting.py, il parametro BASE_DIR imposta il percorso assoluto della directory di base.
SECRET_KEY- Viene utilizzato per creare hash. In generale, abbiamo utilizzato secret_key per cookie, sessioni, protezione csrf e token di autenticazione.
DEBUG - Possiamo impostarlo per il progetto in esecuzione in modalità di sviluppo o di produzione.
ALLOWED_HOSTS- Forniamo l'elenco dei nomi host attraverso i quali viene servita la nostra applicazione. In modalità sviluppo, è facoltativo impostare; tuttavia, nella macchina di produzione, dobbiamo impostare il nostro progetto Django.
INSTALLED_APPS- È l'elenco delle "app" Django attualmente installate e in esecuzione nel nostro progetto Django. Django integrato fornisce sei app installate come segue:
'django.contrib.admin'
'django.contrib.auth'
django.contrib.
django.contrib.sessions
django.contrib.messages
django.contrib.staticfiles
MIDDLEWARE- Aiuta il nostro progetto Django a funzionare. È una classe python che si aggancia all'elaborazione di richieste / risposte django.
TEMPLATES- Definisce come il documento dovrebbe essere visualizzato nel frontend. I modelli Django vengono utilizzati per produrre qualsiasi formato basato su testo.
WSGI_APPLICATION- Qualsiasi server che configuriamo deve sapere dove si trova il file WSGI. Nel caso in cui utilizzi un server esterno, apparirà nelle sue impostazioni. Per impostazione predefinita, punta agli oggetti in wsgi.py.
DATABASES- Si imposta sui database a cui sta attualmente accedendo il nostro progetto Django. È obbligatorio impostare il database predefinito. Nel caso in cui impostiamo il database di nostra scelta, dobbiamo menzionare alcune cose relative al database come: HOST, USER, PASSWORD, PORT, database NAME e ENGINE appropriato.
STATIC_URL- È l'URL da utilizzare quando si fa riferimento a file statici situati in STATIC_ROOT. Per impostazione predefinita, è Nessuno.
Tuttavia, potrebbe essere necessario aggiungere un percorso per i file statici. Vai alla fine del file e appena sotto la voce STATIC_URL, aggiungine uno nuovo chiamato STATIC_ROOT come mostrato di seguito -
myFirstDjangoProject/settings.py
STATIC_URL = "/ statico /"
STATIC_ROOT = os.path.join (BASE_DIR, 'statico')
Configurazione di un database
Esistono molti software di database diversi in grado di memorizzare la data per il tuo sito. Useremo quello predefinito, sqlite3.
Questo è già impostato nella parte sottostante del tuo file myFirstDjangoProject/settings.py -
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
Per creare un database per il nostro blog, eseguiamo quanto segue nella console: python manage.py migrate (dobbiamo essere nella directory myFirstDjangoProject che contiene il file manage.py.
Otterrai il seguente output se tutto va bene:
Avvio del Web Server
Devi essere nella directory che contiene il file manage.py. Nella console, possiamo avviare il server web eseguendo python manage.py runserver come segue:
Ora tutto ciò che devi fare è controllare che il tuo sito web sia in esecuzione. Apri il tuo browser (Firefox, Chrome, Safari, Internet Explorer o quello che usi) e inserisci questo indirizzo -
http://127.0.0.1:8000/
o
http://localhost:8000/ # Poiché il nostro server web è in esecuzione solo sulla nostra macchina locale.
Congratulazioni! Hai appena creato il tuo primo sito web ed eseguilo utilizzando un server web!
Mentre il server web è in esecuzione, non vedrai un nuovo prompt della riga di comando per inserire comandi aggiuntivi. Il terminale accetterà il testo successivo ma non eseguirà nuovi comandi. Questo perché il server web funziona continuamente per ascoltare le richieste in arrivo.
Modelli Django
Stiamo cercando di creare un modello Django che memorizzerà tutti i post nel nostro blog. Ma per assicurarci che funzioni, dobbiamo conoscere gli oggetti.
Oggetti
Oggetti è una raccolta di proprietà e azioni. Cerchiamo di capirlo con un esempio. Supponiamo di voler modellare un gatto, creeremo un oggetto chiamato Gatto che ha proprietà come colore, età, umore (buono / cattivo / assonnato) e proprietario.
Quindi il gatto ha alcune azioni: fare le fusa, graffiare o nutrire.
Cat
--------
color
age
mood
owner
purr()
scratch()
feed(cat_food)
CatFood
--------
taste
Quindi fondamentalmente stiamo cercando di descrivere cose reali in codice con proprietà (chiamate proprietà oggetto) e azioni (chiamate metodi).
Dato che stiamo costruendo un blog, abbiamo bisogno di alcuni contenuti di testo e un titolo. È inoltre necessario avere il nome dell'autore, la data di creazione e anche la data di pubblicazione.
Quindi il nostro blog avrà i seguenti oggetti:
Post
--------
title
text
author
created_date
published_date
Inoltre dobbiamo avere un metodo che pubblichi quel post. Poiché ora siamo consapevoli di cosa sia un oggetto, possiamo creare un modello Django per il nostro post sul blog.
Un modello è un tipo speciale di oggetto in Django e viene salvato nel database. Memorizzeremo i nostri dati nel database SQLite.
Creazione di un'applicazione
Per mantenere tutto chiaro, creeremo un'applicazione separata all'interno del nostro progetto. Di seguito, proveremo a creare un'applicazione web per blog eseguendo il comando semplice indicato di seguito.
Ora noteremo che è stata creata una nuova directory myBlog e ora contiene una serie di file. Le directory e i file nel nostro progetto dovrebbero essere i seguenti:
Dopo aver creato un'applicazione, dobbiamo anche dire a Django di usarla. Lo facciamo nel file myFirstDjangoProject / settings.py.
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'myBlog',
]
Creazione di un modello di post sul blog
Nel myBlog/models.py file, definiamo tutti gli oggetti chiamati Modelli: questo è un luogo in cui definiremo il nostro post sul blog.
Apriamo myBlog / models.py, rimuoviamo tutto da esso e scriviamo il codice come segue:
In primo luogo, importiamo alcune funzionalità da altri file chiamando da o importando. Quindi con questo, invece di copiare e incollare le stesse cose in ogni file, possiamo includere alcune parti confrom and import.
class Post(models.Model) - Questa linea definisce il nostro modello (è un oggetto).
class è una parola chiave speciale che indica che stiamo definendo un oggetto.
Post è il nome del nostro modello. Inizia sempre un nome di classe con una lettera maiuscola.
models.Model significa che il Post è un modello Django, quindi Django sa che dovrebbe essere salvato nel database.
Ora parliamo delle proprietà che abbiamo definito sopra: title, text, created_date, published_date e author. Per fare ciò, dobbiamo definire il tipo di ogni campo.
models.CharField - Questo è il modo in cui definisci il testo con un numero limitato di caratteri.
Models.TextField - Questo è per il testo lungo senza limiti.
Models.DateTimeField - Questo è per la data e l'ora.
Models.ForeignKey - Questo è un collegamento a un altro modello.
Definiamo una funzione / metodo con def e pubblicare è il nome del metodo.
I metodi spesso restituiscono qualcosa. Qui quando chiamiamo __str __ (), otterremo un testo (stringa) con un titolo del post.
Creazione di tabelle per i modelli nel database
Il passaggio finale è aggiungere un nuovo modello al nostro database. Per prima cosa, dobbiamo far capire a Django che abbiamo apportato alcune modifiche al nostro modello. Facciamo lo stesso nella nostra finestra della console con il comandopython manage.py make migrations myBlog come mostrato di seguito -
Quindi, Django prepara un file di migrazione che ora dobbiamo applicare al nostro database. Nella nostra console possiamo digitare:python manage.py migrate myBlog e l'output dovrebbe essere il seguente -
Il nostro modello Post è ora nel nostro database.
Django Admin
Per aggiungere, modificare ed eliminare i post che abbiamo appena modellato, utilizziamo Django admin.
Quindi apriamo il file myBlog/admin.py file e metti sotto i contenuti in questo -
In primo luogo, importiamo (includiamo) il modello Post definito nel capitolo precedente. Per rendere il nostro modello visibile nella pagina di amministrazione, dobbiamo registrare il modello con admin.site.register (Post).
Per accedere a un sito di amministrazione, è necessario creare un superutente, un account utente che ha il controllo su tutto sul sito. Quindi ferma il server web e digita python da riga di comandomanage.py createsuperusere premere Invio.
Ok, quindi è il momento di guardare il nostro modello Post. Ricordati di eseguire python manage.py run server in console per eseguire il server web. Vai al tuo browser e digita l'indirizzohttps://127.0.0.1:8000/admin/.Accedi con le credenziali che abbiamo appena scelto. Quindi dovresti vedere la dashboard di amministrazione di Django come di seguito -
Vai su Post e sperimentalo un po '. Puoi aggiungere molti post del blog e contenuti da qualsiasi luogo. Il tuo blog avrà un aspetto simile a questo:
Questa è solo una panoramica di Django e siamo in grado di creare un blog con poche righe di codice.