Il tuo primo progetto Django!
Parte di questo capitolo è tratto dal tutorial delle Geek Girls Carrots (https://github.com/ggcarrots/django-carrots).
Parti di questo capitolo si basano sul django-marcador tutorial con licenza Creative Commons Attributions-ShareAlike 4.0 International License. Il tutorial di django-marcador è protetto da copyright di Markus Zapke-Gründemann et al.
Creeremo un piccolo blog!
Il primo passo è quello di iniziare un nuovo progetto di Django. Fondamentalmente, questo significa che eseguiremo alcuni script forniti da Django che creerà per noi lo scheletro di un progetto Django. Si tratta solo di un insieme di directory e file che verranno utilizzati dopo.
I nomi di alcuni file e cartelle sono molto importanti per Django. Non dovresti modificare i nomi dei file che stiamo per creare. Neanche spostarli in un altro posto è una buona idea. Django deve mantenere una determinata struttura per essere in grado di trovare le cose importanti.
Ricordati di eseguire tutto nel virtualenv. Se non vedi il prefisso
(myvenv)
nella tua console, devi attivare il tuo virtualenv. Abbiamo spiegato come farlo nel capitolo installazione Django nella parte Lavorando con virtualenv. Digitandomyvenv\Scripts\activate
su Windows oppuresource myvenv/bin/activate
su Mac OS / Linux farà questo per te.
Dovresti eseguire il seguente comando nella tua console MacOS X o Linux; non dimenticarti di aggiungere il punto .
alla fine!
command-line
(myvenv) ~/djangogirls$ django-admin startproject mysite .
Il punto
.
è cruciale perché dice allo script d'installare Django nell'attuale directory (quindi il punto.
è un riferimento di abbreviazione).Nota Quando digiti i comandi sopra, ricorda che si digita soltanto la parte che inizia con django-admin oppure
`. Le parti mostrate qui come (myvenv) ~/djangogirls$ e
(myvenv) C:\Users\Name\djangogirls` sono solo esempi del prompt che starà invitando il tuo input sulla tua command line.
Dovresti eseguire nella tua console MacOS o Linux il seguente comando; non dimenticarti di aggiungere il punto .
alla fine :
command-line
(myvenv) C:\Users\Name\djangogirls> django-admin.exe startproject mysite .
Il punto
.
è cruciale perché dice allo script d'installare Django nell'attuale directory (quindi il punto.
è un riferimento di abbreviazione).Nota Quando digiti i comandi sopra, ricorda che si digita soltanto la parte che inizia con django-admin oppure
`. Le parti mostrate qui come (myvenv) ~/djangogirls$ e
(myvenv) C:\Users\Name\djangogirls` sono solo esempi del prompt che starà invitando il tuo input sulla tua command line.
django-admin.py
è uno script che creerà le cartelle ed i file per te. Adesso dovresti avere una struttura di directory simile a questa:
djangogirls
├── manage.py
├── mysite
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── myvenv
│ └── ...
└── requirements.txt
Nota: nella struttura della directory, vedrai anche la tua cartella
myvenv
che abbiamo creato prima.
manage.py
è uno script che aiuta a gestire il sito. Usandolo saremo in grado di avviare un web server sul nostro computer senza dover istallare nient'altro, tra l'altro.
Il file settings.py
contiene la configurazione del tuo sito web.
Ricordi quando abbiamo parlato di un postino che controlla dove rilasciare la lettera? il file urls.py
contiene una lista di schemi usati da urlresolver
.
Ignoriamo gli altri file per ora dal momento che non li modificheremo. L'unica cosa da ricordare è di non cancellarli per sbaglio!
Modificare le impostazioni
Facciamo qualche cambiamento in mysite/settings.py
. Apri il file usando il code editor che hai istallato prima.
Nota: Ricorda che settings.py
è un file regolare, come qualsiasi altro. Puoi aprirlo all'interno dell'editor di codice, utilizzando le azioni di menu "file -> apri". Questo dovrebbe portarti la finestra abituale in cui puoi navigare nel file settings.py
e selezionarlo. In alternativa, puoi aprire il file navigando nella cartella djangogirls sul tuo desktop e facendo clic destro su di esso. Quindi, seleziona l'editor di codice dall'elenco. La selezione dell'editor è importante perché potresti avere altri programmi installati che possono aprire il file ma non ti permetterà di modificarlo.
Sarebbe bello avere l'ora corretta sul nostro sito Web. Vai alla lista delle zone orarie Wikipedia e copia la tua zona di tempo (TZ) (ad esempio. Europa/Berlino
).
In settings.py, trova la riga che contiene TIME_ZONE
e modificala per scegliere il tuo fuso orario:
mysite/settings.py
TIME_ZONE = 'Europe/Berlin'
Un codice lingua è costituito dalla lingua, ad esempioen
per l'inglese o de
per il tedesco e il codice del paese, ad esempiode
per la Germania o ch
per la Svizzera. Se l'inglese non è la tua lingua nativa, puoi aggiungere questo per cambiare i pulsanti e le notifiche predefinite da Django per essere nella tua lingua. Quindi, il pulsante "Annulla" verrebbe tradotto nella lingua che hai definito qui. Django arriva con molte traduzioni preparate.
Se vuoi una lingua diversa, cambia il codice lingua modificando la seguente riga:
mysite/settings.py
LANGUAGE_CODE = 'de-ch'
Dovremo anche aggiungere un percorso per i file statici. (Più tardi scopriremo tutti i file statici e CSS nel tutorial.) Vai alla end del file, e appena sotto la voce STATIC_URL
aggiungi un nuovo nome chiamato STATIC_ROOT
:
mysite/settings.py
STATIC_URL = '/static/'
STATIC_ROOT = BASE_DIR / 'static'
Quando DEBUG
è Vero
e ALLOWED_HOSTS
è vuoto, l'host è convalidato contro ['localhost', '127.0.0.1', '[::1]']
. Questo non abbina il nostro hostname su PythonAnywhere dopo aver distribuito la nostra applicazione in modo da modificare le seguenti impostazioni:
mysite/settings.py
ALLOWED_HOSTS = ['127.0.0.1', '.pythonanywhere.com']
Nota: se stai usando un Chromebook, aggiungi questa linea nella parte inferiore del file settings.py:
MESSAGE_STORAGE = 'django.contrib.storage.session.SessionStorage'
Aggiunge anche
.amazonaws.com
aALLOWED_HOSTS
se stai usando cloud9Se stai presentando il tuo progetto su
Glitch.com
, bisogna proteggere la chiave segreta di Django, che deve rimanere confidenziale (altrimenti chiunque faccia un remix del tuo progetto potrebbe vederla):
Prima di tutto, si crea una chiave segreta casuale. Apri nuovamente il terminale Glitch e digita il comando seguente:
command-line
python -c 'from django.core.management.utils import get_random_secret_key; \ print(get_random_secret_key())'
Il comando dovrebbe mostrare una lunga stringa casuale, perfetta da usare come chiave segreta per il tuo nuovo sito web Django. Si incolla poi questa chiave in un file
.env
che Glitch mostrerà solamente se sei il proprietario del sito web.Crea un file
.env
alla base del tuo progetto e aggiungi al suo interno la proprietà seguente:
.env
# Qui, all'interno delle virgolette, puoi tagliare e incollare la chiave casuale generata precedentemente SECRET='3!0k#7ds5mp^-x$lqs2%le6v97h#@xopab&oj5y7d=hxe511jl'
Aggiorna poi il file delle impostazioni di Django per inserire questo valore segreto e impostare il nome del sito web:
mysite/settings.py
SECRET_KEY = os.getenv('SECRET')
Poco più avanti nello stesso file, inserisci il nome del tuo nuovo sito web Glitch:
mysite/settings.py
ALLOWED_HOSTS = [os.getenv('PROJECT_DOMAIN') + ".glitch.me"]
Il valore
PROJECT_DOMAIN
è generato automaticamente da Glitch. Corrisponderà al nome del tuo progetto.
Imposta un database
Ci sono un sacco di software di database diversi che possono immagazzinare dati per il tuo sito. Noi useremo quello di default, sqlite3
.
È già impostato in questa parte del file mysite/settings.py
:
mysite/settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
Per creare un database per il nostro blog, eseguiamo questo nella console: python manage.py migrate
(abbiamo bisogno di essere nella directory djangogirls
che contiene il file manage.py
). Se funziona, dovresti vedere qualcosa di simile:
command-line
(myvenv) ~/djangogirls$ python manage.py migrate
Operations to perform:
Apply all migrations: auth, admin, contenttypes, sessions
Running migrations:
Rendering model states... DONE
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying auth.0008_alter_user_username_max_length... OK
Applying auth.0009_alter_user_last_name_max_length... OK
Applying sessions.0001_initial... OK
E abbiamo finito! Tempo di avviare il server web e vedere se il nostro sito Web funziona!
Avvio del server web
Devi essere nella directory che contiene il file di manage.py
(la directory djangogirls
). Nella console, possiamo avviare il server web eseguendo python manage.py runserver
:
command-line
(myvenv) ~/djangogirls$ python manage.py runserver
Se invece stai usando un Chromebook, digita questo comando:
Cloud 9
(myvenv) ~/djangogirls$ python manage.py runserver 0.0.0.0:8080
o questo se stai usando Glitch:
Glitch.com terminal
$ refresh
Se usi Windows e il comando UnicodeDecodeError
non funziona, puoi usare questo:
command-line
(myvenv) ~/djangogirls$ python manage.py runserver 0:8000
Ora devi solo controllare se il tuo sito web è in esecuzione. Apri il tuo browser (Firefox, Chrome, Safari, Internet Explorer o quello che utilizzi di solito) e inserisci questo indirizzo:
browser
http://127.0.0.1:8000/
Se stai utilizzando un Chromebook e Cloud9, seleziona invece l'URL nella finestra a comparsa che dovrebbe apparire nell'angolo in alto a destra della finestra di comando dove il server web è in esecuzione. L'URL sarà simile a questo:
browser
https://<a bunch of letters and numbers>.vfs.cloud9.us-west-2.amazonaws.com
oppure su Glitch:
https://name-of-your-glitch-project.glitch.me
Congratulazioni! Hai appena creato il tuo primo sito web e lo hai avviato usando un server web! Non è fantastico?
N.B. Una finestra di comando può eseguire solo una cosa alla volta e la finestra di comando che hai aperto in precedenza sta eseguendo il server web. Finché il server web è in esecuzione e in attesa di ulteriori richieste in arrivo, il terminale ammetterà del testo nuovo, ma non eseguirà nuovi comandi.
Abbiamo esaminato come funzionano i server web nel capitolo Come funziona il capitolo .
Per digitare ulteriori comandi mentre il server web è in esecuzione, puoi aprire una nuova finestra terminale e attivare il tuo virtualenv (per rivedere le istruzioni su come aprire una seconda finestra terminale, vedi Introduction to the command line). Per arrestare il server web, devi tornare alla finestra dove è in esecuzione e premere CTRL+C - ovvero i tasti Control e C insieme (su Windows potresti dover premere Ctrl+Break).
Sei pronto per il prossimo passaggio? È ora di creare un po' di contenuti!