Python from Scratch crea un sito web dinamico

Abbiamo coperto un bel po 'di Python nelle esercitazioni precedenti in questa sessione. Oggi combineremo tutto ciò che abbiamo imparato finora per costruire un sito web dinamico con Python.


Preferisci un video tutorial?

Guarda altri video tutorial su YouTube.

Quindi, come inizi a creare siti web con Python? Bene, puoi fare tutto da solo e scrivere un programma che gira su un server web, accettando richieste di pagine e fornendo risposte sotto forma di HTML e altre risorse. Tuttavia, questo è un sacco di lavoro, quindi perché andare a tutti i guai quando ci sono un sacco di strumenti esistenti là fuori per fare il lavoro per voi? Questi strumenti sono chiamati framework e sono quelli che useremo oggi per creare il nostro sito web.

Python Frameworks

Ci sono parecchi framework web Python, ma qui ci sono alcuni dei migliori:

  • Django - Lo useremo oggi. Ha un enorme set di funzionalità, ma rimane semplice da usare. Anche la documentazione è eccellente, quindi se rimani bloccato, avrai il tempo più semplice per risolvere il tuo problema con Django.
  • Grok - Un altro framework con un set di funzionalità che si avvicina a Django. Se decidi di non preferire Django, questa è una buona alternativa.
  • WebPy - Una struttura molto più leggera. Non ha tante funzioni, anche se ha fatto power Reddit per un periodo di tempo!
  • TurboGears - Anche se in precedenza aveva una reputazione di scarsa documentazione, TurboGears è migliorato notevolmente nell'ultimo anno.

Se hai bisogno di opzioni aggiuntive, puoi trovare un elenco più completo sul sito Web Python. Oggi andremo a configurare Django per lo sviluppo su una macchina locale e quindi a costruire un semplice blog. Stiamo anche esaminando il processo di installazione su un server Web remoto.


Installazione di Django

Eseguiremo la maggior parte del nostro lavoro oggi nel Terminal. Questo dovrebbe funzionare su Mac e Linux; tuttavia, se stai usando Windows, il processo è leggermente diverso. Una familiarità con la riga di comando non è necessaria se stai scrivendo solo Python, tuttavia, se hai intenzione di usare Django o di eseguire un sito web dinamico in generale, vale la pena imparare.

Esercitazioni sui terminali

Prendi in considerazione la possibilità di rivedere questi tutorial per metterti in moto con il Terminale.

  • Un'introduzione a lavorare nel terminale, che copre anche Git e Github.
  • 10 consigli per lavorare più velocemente nel terminale.

Ecco i comandi necessari per installare Django. Non è compatibile con Python 3, quindi è necessario installare la versione 2.7 o precedente per farlo funzionare.

 wget http://www.djangoproject.com/download/1.3.1/tarball/ tar xzvf Django-1.3.1.tar.gz cd Django-1.3.1 python setup.py installa

Successivamente, possiamo rimuovere facoltativamente i file di installazione.

 cd ... rm Django-1.3.1.tar.gz

Questo dovrebbe farlo! Proviamoci.

 python from django import get_version get_version ()

Dovresti vedere '1.3.1'. Se lo fai, tutto ha funzionato e Django è installato sul tuo sistema. Congratulazioni! Siamo pronti per iniziare a creare il nostro sito!


Costruire il nostro blog

Oggi costruiremo un sistema di blog, perché è un modo eccellente per imparare le basi. Per prima cosa, dobbiamo creare un progetto Django.

cd ~ / Documents / Projects django-admin.py startproject FirstBlog cd FirstBlog ls

Cosa fanno ciascuno di questi file?

  • __init__.py dice a Python che questa cartella è un pacchetto Python. Ne abbiamo appreso nella terza lezione; consente a Python di importare tutti gli script nella cartella come moduli.
  • manage.py non è in realtà parte del tuo sito web; è uno script di utilità che si esegue dalla riga di comando. Contiene una serie di funzioni per la gestione del tuo sito.
  • settings.py contiene le impostazioni del tuo sito web. Django non usa file XML per la configurazione; tutto è Python. Questo file è semplicemente un numero di variabili che definiscono l'impostazione per il tuo sito.
  • urls.py è il file che associa gli URL alle pagine. Ad esempio, potrebbe mappare yourwebsite.com/about ad Riguardo a noi pagina.

Django si riferisce a se stesso un framework MTV, che sta per Model Template View.

applicazioni

Tuttavia nessuno di questi file da solo crea un sito web funzionale. Per questo, abbiamo bisogno di app. Le app sono dove scrivi il codice che rende il tuo sito web funzionante, ma prima di dare un'occhiata a loro, dobbiamo capire un po 'dei principi di design di Django.

Innanzitutto, Django è un framework MVC, che sta per Model View Controller. Django si riferisce a se stesso un framework MTV, che sta per Model Template View. È un approccio leggermente diverso da MVC, ma fondamentalmente sono abbastanza simili. In ogni caso, MVC è un modello architettonico che fornisce un metodo per strutturare i tuoi progetti. Separa il codice utilizzato per elaborare i dati dal codice che gestisce l'interfaccia utente.

Django si iscrive alla filosofia DRY o "Do not Repeat Yourself".

In secondo luogo, Django si iscrive alla filosofia DRY o Do not Repeat Yourself, il che significa che non si dovrebbe mai scrivere codice che esegue una determinata attività più di una volta. Ad esempio, nel nostro blog, se scrivessimo una funzionalità che selezionava un articolo a caso dall'archivio e implementava questa funzione su più pagine, non la codificheremo più ogni volta che è necessaria. Lo codifichiamo una volta e poi lo usiamo su ogni pagina.

Quindi, in che modo questo riguarda le app? Bene, le app ti consentono di scrivere il tuo sito web in stile DRY. Ogni progetto, come quello che abbiamo qui, può contenere più app. Al contrario, ogni app può essere parte di più progetti. Usando l'esempio di prima, questo significa che se avessimo creato un altro sito in futuro che necessitasse anche di una funzione di pagina casuale, non avremmo dovuto scriverlo di nuovo. Potremmo semplicemente importare l'app da questo progetto. Per questo motivo, è importante che ogni app abbia uno scopo distinto. Se si scrivono tutte le funzionalità del proprio sito all'interno di un'app e quindi è necessario riutilizzarne una parte in un secondo momento, è necessario importare tutto. Se stavi creando un sito e-commerce, ad esempio, non vorrai importare tutte le funzionalità del blog. Tuttavia, se crei un'app per la funzione casuale e un'app per il sistema di pubblicazione del blog, puoi scegliere i bit che desideri.

Ciò significa anche che all'interno del sito, il codice è ben organizzato. Se si desidera modificare una funzione, non è necessario eseguire la ricerca in un unico file; puoi invece accedere all'app pertinente e cambiarla senza preoccuparti di interferire con qualcos'altro.

python mangage.py startapp blog cd blog ls

Di nuovo, abbiamo un __init__.py file per renderlo un pacchetto e altri tre file: modelli, test e viste. Per ora non dobbiamo preoccuparci dei test, ma gli altri due sono importanti. Modelli e visualizzazioni sono i M e V parti di MVC.

Nei modelli, definiamo le nostre strutture dati.

Se hai mai lavorato con PHP in precedenza, potresti aver usato PhpMyAdmin per creare le tue tabelle MySQL e poi scrivere manualmente le tue query SQL negli script PHP. In Django, è molto più facile. Definiamo tutte le strutture di dati di cui abbiamo bisogno in questo file di modelli, quindi eseguiamo un comando e tutti i database necessari vengono creati per noi.

Quando si desidera accedere a tali dati, si passa attraverso questi modelli chiamando il metodo su di essi, invece di eseguire query non elaborate. Questo è molto utile, perché Django può utilizzare diversi programmi di database. Oggi useremo MySQL, perché è il più potente, ed è ciò che fornisce la maggior parte degli host, ma se dovessimo passare a un altro database in futuro, tutto il codice sarà ancora valido! In altre lingue, se volessi passare a SQLite o qualcosa di simile, dovresti riscrivere il codice che accede al tuo database.

Nel file delle viste, scriviamo il codice che effettivamente genera le pagine web. Questo lega tutte le altre parti insieme. Quando un utente digita un URL, viene inviato da gli URL sceneggiatura che abbiamo visto in precedenza al visualizzazioni script, che ottiene quindi i dati rilevanti dai modelli, li elabora e li passa in un modello, che viene infine pubblicato come la pagina che l'utente vede. Daremo un'occhiata a quei modelli a breve. Sono la parte più semplice, principalmente HTML.

Per un blog, avremo bisogno di una tabella di post, con diversi campi per il titolo, il corpo del testo, l'autore, l'ora in cui è stato scritto e così via. Un vero blog avrebbe commenti, ma questo va oltre lo scopo della demo di oggi.

da django.db import model posts posts (models.Model): author = models.CharField (max_length = 30) title = models.CharField (max_length = 100) bodytext = models.TextField () timestamp = models.DateTimeField ()

MySQL

Questi modelli sono solo una descrizione. Dobbiamo creare un vero e proprio database da loro. Prima, però, abbiamo bisogno che MySQL sia in esecuzione sul nostro sistema. Su un web server reale, questo non sarebbe un problema, perché di solito è preinstallato. Fortunatamente, con un gestore di pacchetti, è facile da installare. Innanzitutto, è necessario installare Homebrew e Easy Install

brew install mysql easy_install mysql-python mysqld_safe --skip-grant-tables #let chiunque abbia i permessi completi mysql -u root UPDATE mysql.user SET Password = PASSWORD ('nettuts') WHERE User = "root"; #dare all'utente 'root' una password FLUSH PRIVILEGES; mysql -u root -p #accedere con la nostra password 'nettuts' firstBlog CREATE DATABASE; esci da python2.6 manage.py runserver

Quando riavvierai, MySQL non sarà in esecuzione, quindi ogni volta che devi farlo in futuro, esegui mysqld per avviare il server. Puoi quindi correre python2.6 manange.py runserver in una nuova scheda per avviare il server di sviluppo.

Questo comando non eseguirà ancora il server, restituirà solo un errore. Questo perché dobbiamo configurare le nostre impostazioni. Diamo un'occhiata a settings.py.

È necessario modificare prima le impostazioni del database. Questi iniziano sulla linea dodici.

DATABASE = 'default': 'ENGINE': 'django.db.backends.mysql', # Aggiungi 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' o 'oracle'. 'NOME': 'firstblog', # O percorso al file del database se si utilizza sqlite3. 'USER': 'root', # Non usato con sqlite3. 'PASSWORD': 'nettuts', # Non usato con sqlite3. 'HOST': ", # Imposta la stringa vuota per localhost. Non utilizzata con sqlite3. 'PORT':", # Imposta come stringa vuota per default. Non utilizzato con sqlite3. 

Se si tenta di eseguire nuovamente il server, dovrebbe funzionare, a condizione che MySQL sia stato installato correttamente. Se tu visiti 127.0.0.1:8000 nel tuo browser web, dovresti vedere la pagina Django predefinita.

Ora trasformiamo il nostro sito Django in un blog. Per prima cosa, dobbiamo usare i nostri Modelli per creare tabelle nel database eseguendo il seguente comando:

python2.6 manage.py syncdb

Ogni volta che si cambiano i modelli, è necessario eseguire questo comando per aggiornare il database. Nota che questo non può alterare i campi esistenti; può solo aggiungerne di nuovi. Quindi, se vuoi rimuovere i campi, dovrai farlo manualmente con qualcosa come PhpMyAdmin. Poiché questa è la prima volta che eseguiamo il comando, Django imposterà tutte le tabelle predefinite predefinite per cose come il sistema di amministrazione. Basta digitare "sì" e quindi inserire i propri dati.

Ora impostiamo il urls.py file. Decommenta la prima riga nella sezione degli esempi e modificala per dire url (r '^ $', 'FirstBlog.blog.views.home', name = "home") .

Ora, creiamo il file delle viste per rispondere a queste richieste.

da django.shortcuts import render_to_response da blog.models import posts def home (request): return render_to_response ('index.html')

Modelli

Questo index.html il file non esiste ancora, quindi facciamolo. Crea una cartella, chiamata modelli nel blog app e salvare un file in esso chiamato index.html, che può contenere semplicemente "Hello World" per ora. Quindi, dobbiamo modificare il file delle impostazioni in modo che Django sappia dove si trova questo modello.

La riga 105 è dove inizia la sezione per la dichiarazione delle cartelle dei modelli; quindi regolalo, in questo modo:

TEMPLATE_DIRS = ("blog / templates", # Metti qui le stringhe, come "/ home / html / django_templates" o "C: / www / django / templates". # Usa sempre barre inverse, anche su Windows. # Non dimenticare usare i percorsi assoluti, non i percorsi relativi).

Se esegui nuovamente il server e aggiorni la pagina nel tuo browser, dovresti vedere il messaggio "Hello World". Ora possiamo iniziare a tracciare il nostro blog. Aggiungeremo un codice HTML standard per la home page.

      Primo blog   

Primo blog

Titolo

Pubblicato il giorno dall'autore

Corpo del testo

Se salvi e aggiorni la pagina, dovresti vedere che la pagina è stata aggiornata con questo nuovo contenuto. Il prossimo passo è aggiungere contenuto dinamico dal database. Per riuscirci, Django ha un linguaggio di template che ti permette di incorporare le variabili con parentesi graffe. Cambia la sezione centrale della pagina in modo che assomigli a questa:

Primo blog

title

Inserito il date di author

corpo

Possiamo quindi passare i valori a questi segnaposti variabili da views.py file creando un dizionario di valori.

da django.shortcuts import render_to_response da blog.models import posts def home (richiesta): content = 'title': 'My First Post', 'author': 'Giles', 'date': '18th September 2011', ' corpo ':' Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam cursus tempus dui, ut vulputate nisl eleifend eget. Aenean justo felis, dapibus quis vulputate a, porta et dolor. Pregevole, libero, maschile, vestibolo vitae, fermentum nec ligula. Etiam eget convallis turpis. Donec non sem justo. ', Return render_to_response (' index.html ', contenuto)

Salva e aggiorna, e dovresti vedere che stai passando il contenuto a un modello dal tuo file di visualizzazione. Il passaggio finale è ottenere i dati dal nostro database e inoltrarli invece. Fortunatamente, possiamo fare tutto questo senza query SQL, usando i modelli di Django. Dobbiamo aggiungere il nostro blog app al nostro FirstBlog progetto cambiando un'altra impostazione. Vai a INSTALLED_APPS sulla riga 112 e aggiungi il

'FirstBlog.blog',

alla lista.

Quindi cambia views.py quindi aggiunge dati dal database.

da django.shortcuts import render_to_response da blog.models import posts def home (richiesta): entries = posts.objects.all () [: 10] return render_to_response ('index.html', 'posts': entries)

Quindi, aggiorna il modello per accedere a questi dati.

Primo blog


% per post nei post%

titolo del post

Inserito il post.timestamp di post.author

post.bodytext


% endfor%

Qui, possiamo accedere a tutti i dati nella nostra tabella in views.py file, quindi selezionare solo le prime dieci voci. Passiamo questi dati nel modello, scorriamo le voci e visualizziamo i dati con l'HTML del nostro sito. Questo non funzionerà ancora, perché non c'è nulla nel database. Arresta il server ed esegui:

python2.6 manage.py syncdb

Questo aggiungerà la nuova tabella per i nostri post al database. Quindi, apri una nuova scheda e digita:

mysql -u root -p

... digita la tua password, premi invio, ed esegui:

INSERISCI I valori di blog_posts (autore, titolo, testo) ("Bob", "Hello World", "Lorem Ipsum");

Tornare alla scheda precedente ed eseguire nuovamente il server. Aggiorna la pagina e dovresti visualizzare un post sul blog con il contenuto fittizio appena aggiunto. Se esegui il comando MySQL ancora qualche volta, dovresti vedere più post sulla pagina quando si aggiorna.

Sistema di amministrazione di Django

L'ultima cosa che dobbiamo fare oggi è rivedere il sistema di amministrazione di Django. Questa è una funzionalità davvero potente di Django che ti consente di gestire il tuo sito senza scrivere altro codice, come avresti dovuto se stessimo creando un sito da zero. Per abilitarlo, dobbiamo cambiare alcune impostazioni. Innanzitutto, le righe di commento 4, 5, 13 e 16 all'interno urls.py, in modo che tu possa effettivamente accedere alla pagina di amministrazione. Quindi, vai al INSTALLED_APPS sezione di settings.py e il non comune 'Django.contrib.admin', e '' django.contrib.admindocs,. Per consentire all'amministratore di controllarti messaggi tabella, crea un nuovo file chiamato admin.py nel blog cartella e aggiungere le seguenti righe:

da django.contrib import admin da blog.models importa post admin.site.register (messaggi)

Correre python2.6 manage.py syncdb di nuovo per aggiungere le tabelle per la sezione di amministrazione e riavviare il server.

Se tu visiti 127.0.0.1:8000/admin ora nel tuo browser, dovresti vedere una pagina di accesso. Usa i dettagli che hai scelto prima quando hai eseguito la prima volta syncDB comando per accedere. Dovresti vedere una sezione, chiamata Blog, con un sottotitolo per il messaggi tavolo. Puoi usarlo per creare, modificare e rimuovere i post del blog con una semplice interfaccia.

Questo è tutto ciò che c'è da fare. Hai appena creato un blog perfettamente funzionante, anche se semplice. Per terminare questa lezione, daremo un'occhiata all'installazione di Django su un server web.


Installazione su un server Web

Esistono due tipi di hosting Web e quale sarà influenzato dall'utilizzo di Django. Se hai un hosting condiviso, sei completamente in balia del tuo host.

Molti host web economici non supportano Python. Mentre PHP è quasi garantito, il supporto per altre lingue spesso non lo è. Dovrai controllare il pannello di controllo per determinare se Python (e Django) sono disponibili. Ovviamente il processo è leggermente diverso con ogni host. Quasi tutti gli hosting funzionano su Apache e possiamo usarlo per ospitare Django, usando il mod_wsgi o mod_python Moduli Apache.

La maggior parte degli host web esegue script in diverse lingue usando CGI. Django può essere eseguito su FastCGI e anche, teoricamente, su CGI, ma questo non è ufficialmente supportato e sarebbe troppo lento per un vero sito di produzione. Avrai bisogno di controllare se questi sono installati. Di solito si trovano sotto un titolo, come "Supporto per CGI e linguaggio di scripting".

Se hai l'hosting VPS, o hai la fortuna di avere un server dedicato, la tua vita è molto più facile. Di solito questi sono forniti con Python preinstallato, e da lì, basta seguire gli stessi passi che abbiamo fatto per ottenere una copia locale di Django in esecuzione. Se non hai Python, puoi installarlo con un gestore di pacchetti. Il tuo sistema potrebbe persino venire con Django.

ssh [email protected] wget http://www.djangoproject.com/download/1.3.1/tarball/ tar xzvf Django-1.3.1.tar.gz cd Django-1.3.1 python setup.py installa

Una volta installato Django sul tuo server, carica il sito che hai appena creato utilizzando un client di trasferimento file. Puoi mettere i file ovunque, ma tenerli fuori dal pubblico cartella, o chiunque sarà in grado di vedere il codice sorgente del tuo sito. Io uso /casa per tutti i miei progetti.

Quindi, crea un database MySQL, chiamato "firstblog" sul tuo server ed esegui syncDB ancora. Dovrai creare nuovamente il tuo account per il pannello di controllo dell'amministratore, ma questa è una cosa da fare una sola volta.

Se si tenta di eseguirlo, è possibile che venga visualizzato un errore, poiché le impostazioni del server sono diverse da quelle del computer locale. Potrebbe essere necessario modificare la password del database all'interno settings.py, ma a seconda della configurazione del tuo server, potresti anche incontrare altri problemi. Google è tuo amico in queste situazioni!

Per eseguire il server questa volta, il comando è leggermente diverso. Devi specificare un indirizzo IP e una porta in modo da poter accedere al sito su Internet.

python manage.py runserver 0.0.0.0:8000

Se visiti il ​​tuo sito in un browser web, sulla porta 8000, dovresti vedere il tuo sito!


Conclusione

Questo è tutto per questa lezione ... e la nostra serie. Spero che tu abbia imparato una serie di abilità utili nelle ultime cinque lezioni e che tu sia pronto per andare avanti e imparare ancora più Python in futuro. Se ti piace l'aspetto di Django e desideri continuare ad aumentare la tua conoscenza del framework, ecco alcuni tutorial aggiuntivi sull'argomento.

  • Immergersi in Django
  • Fare una lista di cose da fare
  • 10 utili consigli Django

Come sempre, sono felice di discutere qualsiasi domanda su questo tutorial o su Python in generale all'interno dei commenti. Grazie per aver letto.

Impara Python

Impara Python con la nostra guida completa al tutorial su Python, sia che tu stia appena iniziando o che sei un programmatore esperto che cerca di imparare nuove abilità.