In den vorangegangenen Tutorials dieser Session haben wir bereits einiges über Python berichtet. Heute werden wir alles, was wir bisher gelernt haben, kombinieren, um mit Python eine dynamische Website zu erstellen.
Wie können Sie also mit Python Websites erstellen? Nun, Sie könnten alles selbst machen und ein Programm schreiben, das auf einem Webserver ausgeführt wird und Seitenanforderungen akzeptiert und Antworten in Form von HTML und anderen Ressourcen bereitstellt. Das ist jedoch eine Menge Arbeit, warum also all die Mühe machen, wenn es viele Werkzeuge gibt, die die Arbeit für Sie erledigen? Diese Tools werden als Frameworks bezeichnet und werden heute zum Erstellen unserer Website verwendet.
Es gibt einige Python-Web-Frameworks, aber hier sind einige der besten:
Eine umfassendere Liste finden Sie auf der Python-Website, wenn Sie zusätzliche Optionen benötigen. Heute werden wir Django für die Entwicklung auf einem lokalen Computer einrichten und dann einen einfachen Blog erstellen. Wir werden auch die Installation auf einem Remote-Webserver überprüfen.
Wir werden heute den größten Teil unserer Arbeit im Terminal durchführen. Dies sollte auf Mac und Linux funktionieren. Wenn Sie jedoch Windows verwenden, ist der Prozess etwas anders. Sie müssen sich nicht mit der Befehlszeile auskennen, wenn Sie nur Python schreiben. Wenn Sie jedoch Django verwenden oder generell eine dynamische Website betreiben möchten, sollten Sie etwas lernen.
Sehen Sie sich diese Tutorials durch, um sich mit dem Terminal vertraut zu machen.
Hier sind die Befehle, die Sie benötigen, um Django zu installieren. Es ist nicht mit Python 3 kompatibel. Sie müssen daher Version 2.7 oder eine frühere Version installieren, um es ausführen zu können.
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 installieren
Als nächstes können wir die Installationsdateien optional entfernen.
cd… rm Django-1.3.1.tar.gz
Das sollte es tun! Lass es uns testen.
python von django import get_version get_version ()
Sie sollten '1.3.1' sehen. In diesem Fall hat alles funktioniert und Django ist auf Ihrem System installiert. Herzliche Glückwünsche! Wir können mit dem Erstellen unserer Website beginnen!
Wir werden heute ein Blogsystem erstellen, weil es eine hervorragende Möglichkeit ist, die Grundlagen zu erlernen. Zuerst müssen wir ein Django-Projekt erstellen.
cd ~ / Dokumente / Projekte django-admin.py startprojekt FirstBlog cd FirstBlog ls
Was machen diese Dateien??
__init__.py
teilt Python mit, dass dieser Ordner ein Python-Paket ist. Wir haben davon in der dritten Lektion gelernt. Dadurch kann Python alle Skripts im Ordner als Module importieren.verwaltung.py
ist eigentlich kein Teil Ihrer Website; Es ist ein Utility-Skript, das Sie über die Befehlszeile ausführen. Es enthält eine Reihe von Funktionen zur Verwaltung Ihrer Site.einstellungen.py
enthält die Einstellungen Ihrer Website. Django verwendet keine XML-Dateien zur Konfiguration. alles ist Python. Bei dieser Datei handelt es sich lediglich um eine Reihe von Variablen, die die Einstellung für Ihre Site definieren.urls.py
ist die Datei, die URLs zu Seiten zuordnet. Zum Beispiel könnte es kartieren yourwebsite.com/about zu einem Über uns Seite. Django bezieht sich auf ein MTV-Framework, das für Model Template View steht.
Keine dieser Dateien bildet jedoch eine funktionsfähige Website. Dafür brauchen wir Apps. In Apps werden Sie den Code schreiben, mit dem Ihre Website funktioniert. Bevor wir sie jedoch betrachten, müssen wir etwas über die Gestaltungsprinzipien von Django verstehen.
Erstens ist Django ein MVC-Framework, das für Model View Controller steht. Django bezieht sich auf ein MTV-Framework, das für Model Template View steht. Es ist ein etwas anderer Ansatz als MVC, aber im Grunde sind sie sich ziemlich ähnlich. MVC ist jedoch ein architektonisches Muster, das eine Methode zur Strukturierung Ihrer Projekte bietet. Sie trennt den Code, der zur Verarbeitung von Daten verwendet wird, von dem Code, der die Benutzeroberfläche verwaltet.
Django abonniert die Philosophie von DRY oder "Don't Repeat Yourself".
Zweitens abonniert Django die Philosophie DRY oder Don't Repeat Yourself, was bedeutet, dass Sie niemals Code schreiben sollten, der eine bestimmte Aufgabe mehr als einmal ausführt. Wenn wir beispielsweise in unserem Blog ein Feature geschrieben haben, das einen zufälligen Artikel aus dem Archiv herausgesucht und dieses Feature auf mehreren Seiten implementiert hat, würden wir es nicht jedes Mal neu codieren, wenn es benötigt wird. Wir würden es einmal codieren und dann auf jeder Seite verwenden.
Wie bezieht sich das auf Apps? Apps ermöglichen es Ihnen, Ihre Website in einem TROCKEN-Stil zu schreiben. Jedes Projekt, wie wir es hier haben, kann mehrere Apps enthalten. Umgekehrt kann jede App Teil mehrerer Projekte sein. Anhand des Beispiels von vorhin bedeutet dies, dass wir, wenn wir in Zukunft eine andere Site erstellen würden, die auch eine zufällige Seitenfunktion benötigt, diese nicht noch einmal schreiben müssten. Wir könnten die App einfach aus diesem Projekt importieren. Aus diesem Grund ist es wichtig, dass jede App einem bestimmten Zweck dient. Wenn Sie alle Funktionen Ihrer Site in einer App schreiben und später einen Teil davon erneut verwenden müssen, müssen Sie sie alle importieren. Wenn Sie beispielsweise eine E-Commerce-Website erstellen, möchten Sie nicht alle Blog-Funktionen importieren. Wenn Sie jedoch eine App für die Zufallsfunktion und eine App für das Blog-Veröffentlichungssystem erstellen, können Sie die gewünschten Bits auswählen.
Dies bedeutet auch, dass der Code innerhalb der Site gut organisiert ist. Wenn Sie eine Funktion ändern möchten, müssen Sie nicht eine einzige Datei durchsuchen. Sie können stattdessen zu der entsprechenden App navigieren und sie ändern, ohne sich Sorgen darüber machen zu müssen, dass sie mit anderen Elementen in Konflikt gerät.
python mangage.py startapp blog cd blog ls
Wieder haben wir eine __init__.py
Datei, um daraus ein Paket zu machen, und drei weitere Dateien: Modelle, Tests und Ansichten. Wir müssen uns jetzt nicht um Tests kümmern, aber die anderen beiden sind wichtig. Modelle und Ansichten sind das M
und V
Teile von MVC.
In Modellen definieren wir unsere Datenstrukturen.
Wenn Sie zuvor schon einmal mit PHP gearbeitet haben, haben Sie möglicherweise PhpMyAdmin verwendet, um Ihre MySQL-Tabellen zu erstellen, und dann Ihre SQL-Abfragen manuell in Ihre PHP-Skripts geschrieben. In Django ist es viel einfacher. Wir definieren alle Datenstrukturen, die wir in dieser Modelldatei benötigen, führen dann einen Befehl aus und alle erforderlichen Datenbanken werden für uns erstellt.
Wenn Sie auf diese Daten zugreifen möchten, verwenden Sie diese Modelle, indem Sie eine Methode für sie aufrufen, anstatt Rohabfragen auszuführen. Dies ist sehr hilfreich, da Django mehrere Datenbankprogramme verwenden kann. Wir werden MySQL heute verwenden, weil es das leistungsfähigste ist und von den meisten Hosts bereitgestellt wird. Wenn wir jedoch in Zukunft auf eine andere Datenbank wechseln müssen, ist der gesamte Code noch gültig! Wenn Sie in anderen Sprachen zu SQLite oder etwas Ähnlichem wechseln möchten, müssen Sie den Code neu schreiben, der auf Ihre Datenbank zugreift.
In der Ansichtsdatei schreiben wir den Code, der die Webseiten tatsächlich generiert. Dies verbindet alle anderen Teile miteinander. Wenn ein Benutzer eine URL eingibt, wird diese vom gesendet URLs
Skript, das wir früher gesehen haben Ansichten
Skript, das relevante Daten aus den Modellen bezieht, verarbeitet und in eine Vorlage übergibt, die schließlich als die Seite angezeigt wird, die der Benutzer sieht. Wir werden uns diese Vorlagen in Kürze ansehen. Sie sind der einfachste Teil - meistens HTML.
Für ein Blog benötigen wir eine Tabelle mit Beiträgen mit mehreren Feldern für den Titel, den Haupttext, den Autor, die Zeit, zu der es geschrieben wurde, und so weiter. Ein richtiger Blog hätte Kommentare, aber das würde den Rahmen der heutigen Demo sprengen.
Von django.db importieren Sie Klassenpfosten für Modelle (models.Model): author = models.CharField (max_length = 30) title = models.CharField (max_length = 100) bodytext = models.TextField () timestamp = models.DateTimeField ()
Diese Modelle sind nur eine Beschreibung. Wir müssen aus ihnen eine tatsächliche Datenbank erstellen. Zunächst benötigen wir jedoch MySQL auf unserem System. Auf einem echten Webserver wäre dies kein Problem, da sie normalerweise vorinstalliert sind. Glücklicherweise ist es mit einem Paketmanager einfach zu installieren. Zuerst müssen Sie Homebrew und Easy Install installieren
brew install mysql easy_install mysql-python mysqld_safe --skip-grant-tables #let Jeder hat volle Berechtigungen mysql -u root UPDATE mysql.user SET Password = PASSWORD ('nettuts') WHERE User = "root"; #Geben Sie dem Benutzer 'root' ein Kennwort an. FLUSH PRIVILEGES; mysql -u root -p #log in mit unserem Kennwort 'nettuts' CREATE DATABASE firstblog; Beenden Sie python2.6 manage.py runserver
Wenn Sie einen Neustart durchführen, wird MySQL nicht ausgeführt. Führen Sie also jedes Mal, wenn Sie dies in der Zukunft tun müssen mysqld
um den Server zu starten. Sie können dann laufen python2.6 manange.py runserver
in einer neuen Registerkarte, um den Entwicklungsserver zu starten.
Dieser Befehl kann den Server noch nicht ausführen, es wird lediglich ein Fehler zurückgegeben. Das liegt daran, dass wir unsere Einstellungen konfigurieren müssen. Lass uns einen Blick darauf werfen einstellungen.py
.
Sie müssen zuerst die Datenbankeinstellungen ändern. Diese beginnen in Zeile zwölf.
DATABASES = 'default': 'ENGINE': 'django.db.backends.mysql', # Fügen Sie 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' oder 'oracle' hinzu. 'NAME': 'firstblog', # oder Pfad zur Datenbankdatei, wenn Sie sqlite3 verwenden. 'USER': 'root', # Wird bei sqlite3 nicht verwendet. 'PASSWORD': 'nettuts', # Wird bei sqlite3 nicht verwendet. 'HOST': ", # Für" localhost "auf leere Zeichenfolge gesetzt. Wird nicht mit sqlite3 verwendet. 'PORT':", # Für Standard wird eine leere Zeichenfolge festgelegt. Wird nicht mit sqlite3 verwendet.
Wenn Sie versuchen, den Server erneut auszuführen, sollte er funktionieren, vorausgesetzt, Sie haben MySQL erfolgreich installiert. Wenn du besuchst 127.0.0.1:8000
In Ihrem Webbrowser sollten Sie die standardmäßige Django-Seite sehen.
Lassen Sie uns nun unsere Django-Site in einen Blog verwandeln. Zuerst müssen wir unsere Modelle verwenden, um Tabellen in der Datenbank zu erstellen, indem Sie den folgenden Befehl ausführen:
python2.6 manage.py syncdb
Jedes Mal, wenn Sie Ihre Modelle ändern, sollten Sie diesen Befehl ausführen, um die Datenbank zu aktualisieren. Beachten Sie, dass vorhandene Felder dadurch nicht geändert werden können. es können nur neue hinzugefügt werden. Wenn Sie also Felder entfernen möchten, müssen Sie dies manuell mit etwas wie PhpMyAdmin tun. Da wir den Befehl zum ersten Mal ausführen, werden alle standardmäßig eingebauten Tabellen von Django für das Verwaltungssystem eingerichtet. Geben Sie einfach "Ja" ein und geben Sie Ihre Daten ein.
Nun lass uns das einrichten urls.py
Datei. Kommentieren Sie die erste Zeile im Beispielteil und kommentieren Sie sie URL (r '^ $', 'FirstBlog.blog.views.home', name = "home")
.
Nun erstellen wir die Ansichtsdatei, um auf diese Anfragen zu antworten.
von django.shortcuts importieren render_to_response von blog.models import post (home) (request): return render_to_response ('index.html')
Diese index.html
Datei existiert noch nicht, also machen wir es. Erstellen Sie einen Ordner mit dem Namen "Vorlagen" Blog
App und speichern Sie eine Datei in dieser Datei index.html
, die einfach "Hello World" enthalten kann. Dann müssen wir die Einstellungsdatei bearbeiten, damit Django weiß, wo sich diese Vorlage befindet.
In Zeile 105 beginnt der Abschnitt zur Deklaration von Vorlagenordnern. Passen Sie es so an:
TEMPLATE_DIRS = ("blog / templates", # Fügen Sie hier Zeichenfolgen ein, wie "/ home / html / django_templates" oder "C: / www / django / templates"). # Verwenden Sie immer Schrägstriche, auch unter Windows. # Vergessen Sie nicht absolute Pfade verwenden, nicht relative Pfade.)
Wenn Sie den Server erneut ausführen und die Seite in Ihrem Browser aktualisieren, sollte die Meldung "Hello World" angezeigt werden. Wir können jetzt mit dem Layout unseres Blogs beginnen. Wir fügen ein wenig HTML für die Homepage hinzu.
Erster Blog Erster Blog
Titel
Gepostet am Datum vom Autor
Hauptteil
Wenn Sie die Seite speichern und aktualisieren, sollten Sie sehen, dass die Seite mit diesem neuen Inhalt aktualisiert wurde. Im nächsten Schritt fügen Sie dynamischen Inhalt aus der Datenbank hinzu. Um dies zu erreichen, verfügt Django über eine Templatesprache, mit der Sie Variablen mit geschweiften Klammern einbetten können. Ändern Sie den mittleren Bereich Ihrer Seite so, dass er wie folgt aussieht:
Erster Blog
Titel
Gepostet am date von author
Karosserie
Wir können dann Werte an diese variablen Platzhalter von übergeben views.py
Datei erstellen, indem Sie ein Wörterbuch der Werte erstellen.
von django.shortcuts import render_to_response von blog.models importieren Sie Posts (zu Hause) (Anfrage): content = 'title': 'Mein erster Post', 'author': 'Giles', 'date': '18. September 2011', ' body ':' Lorem ipsum dolor sitzen amet, consectetur adipiscing elit. Etiam cursus tempus dui, mit vulputate nisl eleifend eget. Aenean justo felis, dapibus quis vulputate, porta et dolor. Praesent enim libero, malesuada nec vestibulum vitae, Fermentum nec ligula. Etiam Eget Convallis Turpis. Donec non sem justo. ', Return render_to_response (' index.html ', Inhalt)
Speichern und aktualisieren, und Sie sollten jetzt sehen, dass Sie jetzt Inhalt aus Ihrer Ansichtsdatei an eine Vorlage übergeben. Der letzte Schritt besteht darin, Daten aus unserer Datenbank abzurufen und diese stattdessen weiterzugeben. Glücklicherweise können wir dies alles ohne SQL-Abfragen mit Djangos Modellen tun. Wir müssen unsere hinzufügen Blog
App für unsere FirstBlog
Projekt durch Ändern einer anderen Einstellung. Gehe zu INSTALLED_APPS
in Zeile 112 und fügen Sie die
'FirstBlog.blog',
zur Liste.
Dann ändern views.py
es fügt also Daten aus der Datenbank hinzu.
von django.shortcuts import render_to_response aus blog.models import post (home) importieren (request): entries = posts.objects.all () [: 10] return render_to_response ('index.html', 'posts': entries)
Aktualisieren Sie anschließend die Vorlage, um auf diese Daten zuzugreifen.
Erster Blog
% for post in posts%post.title
Gepostet am post.timestamp von post.author
post.bodytext
% endfor%
Hier können wir auf alle Daten in unserer Tabelle im zugreifen views.py
Datei und wählen Sie nur die ersten zehn Einträge aus. Wir übergeben diese Daten in die Vorlage, durchlaufen die Einträge und zeigen die Daten mit dem HTML-Code unserer Website an. Das funktioniert noch nicht, da sich in der Datenbank nichts befindet. Stoppen Sie den Server und führen Sie Folgendes aus:
python2.6 manage.py syncdb
Dadurch wird die neue Tabelle für unsere Beiträge zur Datenbank hinzugefügt. Öffnen Sie dann eine neue Registerkarte und geben Sie Folgendes ein:
mysql -u root -p
Geben Sie Ihr Passwort ein, drücken Sie die Eingabetaste und führen Sie Folgendes aus:
INSERT INTO blog_posts (author, title, bodytext) Werte ('Bob', 'Hello World', 'Lorem Ipsum');
Kehren Sie zur vorherigen Registerkarte zurück und führen Sie den Server erneut aus. Aktualisieren Sie die Seite, und Sie sollten einen Blogeintrag mit dem gerade hinzugefügten Dummy-Inhalt sehen. Wenn Sie den MySQL-Befehl mehrmals ausführen, sollten beim Aktualisieren weitere Beiträge auf der Seite angezeigt werden.
Das letzte, was wir heute tun müssen, ist die Überprüfung des Verwaltungssystems von Django. Dies ist eine wirklich leistungsstarke Funktion von Django, mit der Sie Ihre Website verwalten können, ohne weiteren Code schreiben zu müssen, wie Sie es von Grund auf tun müssen, wenn Sie eine Site von Grund auf neu erstellen. Um es zu aktivieren, müssen wir einige Einstellungen ändern. Zunächst sind die Zeilen 4, 5, 13 und 16 unkommentiert urls.py
, damit Sie tatsächlich auf die Admin-Seite zugreifen können. Gehen Sie als nächstes zum INSTALLED_APPS
Abschnitt von einstellungen.py
und unkommentiert 'django.contrib.admin',
und 'django.contrib.admindocs',
. Damit der Admin Ihre Beiträge
Erstellen Sie eine neue Datei mit dem Namen admin.py
in dem Blog
Ordner und fügen Sie die folgenden Zeilen hinzu:
aus django.contrib import admin aus blog.models import posts: admin.site.register (posts)
Lauf python2.6 manage.py syncdb
erneut, um die Tabellen für den Admin-Abschnitt hinzuzufügen, und starten Sie den Server erneut.
Wenn du besuchst 127.0.0.1:8000/admin Jetzt in Ihrem Browser sollten Sie eine Login-Seite sehen. Verwenden Sie die Details, die Sie zuvor ausgewählt haben, als Sie den Syncdb
Befehl zum Einloggen. Sie sollten einen Abschnitt mit dem Namen "Blog" sehen, der einen Untertitel für die Beiträge
Tabelle. Sie können dies zum Erstellen, Bearbeiten und Entfernen von Blogbeiträgen mit einer einfachen Benutzeroberfläche verwenden.
Das ist alles was zu tun ist. Sie haben gerade ein voll funktionsfähiges, wenn auch einfaches Blog erstellt. Um diese Lektion zu beenden, werden wir Django auf einem Webserver installieren.
Es gibt zwei Arten von Webhosting, und welche von Ihnen hat Einfluss darauf, ob Sie Django verwenden können. Wenn Sie das Hosting geteilt haben, sind Sie Ihrem Gastgeber völlig ausgeliefert.
Viele billige Web-Hosts unterstützen Python nicht. Während PHP fast garantiert ist, ist die Unterstützung für andere Sprachen oft nicht gegeben. Sie müssen das Kontrollfeld überprüfen, um festzustellen, ob Python (und Django) verfügbar sind. Natürlich ist der Prozess bei jedem Host etwas anders. Fast alle Hostings laufen auf Apache, und wir können damit Django hosten
mod_wsgi
odermod_python
Apache-Module.
Die meisten Web-Hosts verwenden Skripts in mehreren Sprachen unter Verwendung von CGI. Django kann mit FastCGI und theoretisch auch mit CGI ausgeführt werden. Dies wird jedoch nicht offiziell unterstützt und wäre für eine tatsächliche Produktionswebsite viel zu langsam. Sie müssen überprüfen, ob diese installiert sind. Sie befinden sich normalerweise unter einer Überschrift wie "CGI und Scripting Language Support"..
Wenn Sie ein VPS-Hosting haben oder das Glück haben, einen dedizierten Server zu haben, ist Ihr Leben viel einfacher. Normalerweise wird Python vorinstalliert, und von dort müssen Sie nur noch die gleichen Schritte befolgen, die wir durchlaufen haben, um eine lokale Kopie von Django zum Laufen zu bringen. Wenn Sie nicht über Python verfügen, können Sie es mit einem Paketmanager installieren. Ihr System kann sogar mit Django geliefert werden.
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 installieren
Sobald Sie Django auf Ihrem Server installiert haben, laden Sie die soeben erstellte Site mit einem beliebigen Dateiübertragungsclient hoch. Sie können die Dateien an beliebiger Stelle ablegen, halten Sie sie jedoch aus dem Ordner Öffentlichkeit
Ordner oder jeder kann den Quellcode Ihrer Site sehen. ich benutze /Zuhause
für alle meine Projekte.
Erstellen Sie als Nächstes eine MySQL-Datenbank mit dem Namen 'firstblog' auf Ihrem Server, und führen Sie sie aus Syncdb
nochmal. Sie müssen Ihr Konto erneut für das Admin-Kontrollfeld erstellen. Dies ist jedoch eine einmalige Angelegenheit.
Wenn Sie dies versuchen und ausführen, erhalten Sie möglicherweise eine Fehlermeldung. Dies liegt daran, dass sich die Einstellungen für den Server von denen auf Ihrem lokalen Computer unterscheiden. Sie müssen möglicherweise das Datenbankkennwort in ändern einstellungen.py
, Abhängig von Ihrer Serverkonfiguration können jedoch auch andere Probleme auftreten. Google ist in diesen Situationen dein Freund!
Um den Server diesmal auszuführen, ist der Befehl etwas anders. Sie müssen eine IP-Adresse und einen Port angeben, damit Sie über das Internet auf die Website zugreifen können.
python manage.py runserver 0.0.0.0:8000
Wenn Sie Ihre Site in einem Webbrowser an Port 8000 besuchen, sollte Ihre Site angezeigt werden!
Das war es für diese Lektion… und unsere Serie. Ich hoffe, dass Sie in den letzten fünf Lektionen eine Reihe nützlicher Fähigkeiten gelernt haben und dass Sie bereit sind, in Zukunft noch mehr Python zu lernen. Wenn Sie das Aussehen von Django mögen und Ihr Wissen über das Framework weiter verbessern möchten, finden Sie hier einige zusätzliche Tutorials zu diesem Thema.
Wie immer bin ich froh, Fragen zu diesem Tutorial oder Python im Allgemeinen in den Kommentaren zu besprechen. Danke fürs Lesen.
Lernen Sie Python mit unserem kompletten Python-Tutorial, egal ob Sie gerade erst anfangen oder ein erfahrener Programmierer sind, der neue Fähigkeiten erlernen möchte.