Heim Backend-Entwicklung Python-Tutorial Python erstellt Webserver und Web-Frameworks für Websites

Python erstellt Webserver und Web-Frameworks für Websites

Feb 22, 2017 am 10:58 AM

Ich habe zuvor Django verwendet, um eine kleine Website zu erstellen, aber ich hatte das Gefühl, dass Django zu umständlich war, also beschloss ich, auf ein einfacheres Web-Framework umzusteigen, um damit herumzuspielen. Der Autor von Web.py ist gestorben und das Projekt wurde schon lange nicht mehr aktualisiert, daher werde ich es nicht verwenden. Flask ist auch ein ausgereiftes, leichtes Web-Framework. Es gibt viele Stars und Forks auf Github, und die Dokumentation und Erweiterungen sind ebenfalls sehr umfangreich.

Der beste Weg, ein Framework zu erlernen, besteht darin, das Framework für die Durchführung eines Projekts zu verwenden und das Framework im tatsächlichen Kampf zu verstehen und zu beherrschen. Hier verwende ich das Flask-Framework und die Mysql-Datenbank, um ein Forensystem aufzubauen. Obwohl der Spatz klein ist, hat er alle Organe:

Python 搭建Web站点之Web服务器与Web框架

Screenshot des Forumsystems

Das Folgende sind die Grundlagen Funktionen des Forums:

Komplettes Benutzermodul (Registrierung, Anmeldung, Änderung, Passwortabruf, Informationsänderung, Site-Nachrichtenbenachrichtigung (Erstellen, Beantworten von Themen, Site-Suche, Markdown-Unterstützung, @); Benutzererinnerung); Leistungsstarke Hintergrundverwaltung, Unterstützung für das Blockieren von Benutzern, Themen und Kommentaren, die verschiedene Suchbedingungen für Themen und Kommentare unterstützen.

Dieser Blog wird eine Reihe von Artikeln verwenden, um den Prozess des Aufbaus des Forumsystems aufzuzeichnen um für Studenten hilfreich zu sein, die gerade erst mit der Webentwicklung beginnen.

Wir hören oft von Web-Frameworks in Python wie Django und Flask. Was genau ist der Unterschied zwischen einem Web-Framework und einem Webserver (Nginx, Apache usw.)? Verwenden Sie Python auch, um eine Website ohne das Framework zu erstellen. Um diese Fragen zu lösen, müssen wir das Funktionsprinzip des Webservers und die Natur des Web-Frameworks verstehen.

Webserver

Wenn wir die URL in den Browser eingeben, fordert der Browser zunächst den DNS-Server auf, die IP-Adresse der angeforderten Site zu erhalten. Senden Sie dann eine HTTP-Anfrage mit der IP an den Host und empfangen Sie dann die HTTP-Antwort vom Server. Nach dem Rendern präsentiert uns der Browser eine bessere Wirkung. Dabei leistet der Webserver im Hintergrund seinen Beitrag.

Einfach ausgedrückt ist ein Webserver ein Programm, das auf einem physischen Server läuft. Es wartet permanent darauf, dass Clients (hauptsächlich Browser wie Chrome, Firefox usw.) Anfragen senden. Wenn eine Anfrage eingeht, generiert es eine entsprechende Antwort und sendet diese an den Client zurück. Der Webserver kommuniziert mit dem Client über das HTTP-Protokoll und wird daher auch HTTP-Server genannt.

Python 搭建Web站点之Web服务器与Web框架

Webserver

Das Funktionsprinzip des Webservers ist nicht kompliziert und lässt sich im Allgemeinen in die folgenden 4 Schritte unterteilen: Verbindungsaufbau, Anforderungsprozess, Antwortprozess und Schließen der Verbindung.

Verbindung herstellen: Der Client stellt über das TCP/IP-Protokoll eine TCP-Verbindung zum Server her. Anforderungsprozess: Der Client sendet ein HTTP-Protokollanforderungspaket an den Server, um Ressourcendokumente auf dem Server anzufordern. Antwortprozess: Der Server sendet ein HTTP-Protokoll-Antwortpaket an den Client. Wenn die angeforderte Ressource dynamische Sprachinhalte enthält, ruft der Server die dynamische Sprachinterpretations-Engine auf, um den „dynamischen Inhalt“ zu verarbeiten und die verarbeiteten Daten an den Client zurückzugeben. Das HTML-Dokument wird vom Client interpretiert und das grafische Ergebnis wird auf dem Client-Bildschirm gerendert. Verbindung schließen: Der Client wird vom Server getrennt.

Lassen Sie uns einen einfachen Webserver implementieren. Nachdem Sie das Beispielprogramm ausgeführt haben, überwacht es den lokalen Port 8000, und Sie können den Antwortinhalt anzeigen, indem Sie im Browser auf http://www.php.cn/:8000 zugreifen. Und unser Programm kann auch den vom Client gesendeten Anforderungsinhalt ausdrucken, wie unten gezeigt:

Python 搭建Web站点之Web服务器与Web框架

Einfacher Webserver

Hier Sowohl die Anforderung als auch die Antwort müssen dem HTTP-Protokoll entsprechen. Weitere Informationen zum HTTP-Protokoll finden Sie im „HTTP Authoritative Guide“ oder in den von mir zusammengestellten HTTP-Inhalten.

Obwohl die Hauptaufgabe des Webservers darin besteht, eine Antwort entsprechend der Anfrage zurückzugeben, ist der eigentliche Webserver viel komplizierter als das obige Beispiel, da zu viele Faktoren berücksichtigt werden müssen, wie zum Beispiel:

Caching-Mechanismus: Zwischenspeicherung einiger häufig besuchter Seiten, um die Antwortgeschwindigkeit zu verbessern; Notieren Sie das Besuchsdatum, um eine Analyse zu erleichtern.

Die derzeit am häufigsten verwendeten kostenlosen Webserver unter UNIX- und LINUX-Plattformen sind Apache und Nginx.

Webanwendung

Der Webserver akzeptiert eine HTTP-Anfrage und gibt eine Antwort zurück. In vielen Fällen handelt es sich bei der Antwort nicht um eine statische Datei, sodass eine Anwendung eine entsprechende Antwort basierend auf der Anfrage generieren muss. Die Anwendungen hier werden hauptsächlich verwendet, um zugehörige Geschäftslogik zu verarbeiten, die Datenbank zu lesen oder zu aktualisieren und entsprechende Antworten gemäß verschiedenen Anforderungen zurückzugeben. Beachten Sie, dass dies nicht der Webserver selbst ist, sondern nur für die HTTP-Protokollebene und einige damit verbundene Dinge wie Parallelitätsverarbeitung, Sicherheit, Protokollierung usw. verantwortlich ist.

Anwendungen können in verschiedenen Sprachen geschrieben werden (Java, PHP, Python, Ruby usw.). Diese Anwendung empfängt die Anfrage des Clients nach der Verarbeitung und gibt die Antwort an den Server zurück Webserver. Schließlich kehrt der Webserver zum Client zurück. Die gesamte Architektur ist wie folgt:

Python 搭建Web站点之Web服务器与Web框架

Webanwendung

Nehmen Sie Python als Beispiel Die originellste und direkteste Art und Weise nutzt den CGI-Standard, der 1998 sehr beliebt war. Stellen Sie zunächst sicher, dass der Webserver CGI unterstützt und einen CGI-Handler konfiguriert hat. Richten Sie dann das CGI-Verzeichnis ein, fügen Sie die entsprechende Python-Datei im Verzeichnis hinzu. Jede Python-Datei verarbeitet die entsprechende Eingabe und generiert eine HTML-Datei, wie im Folgenden gezeigt Beispiel:

# !/usr/bin/python 
# -*- coding: UTF-8 -*- 
print "Content-type:text/html" 
print # 空行,告诉服务器结束头部 
print &#39;<html>&#39; 
print &#39;<head>&#39; 
print &#39;<meta charset="utf-8">&#39; 
print &#39;</head>&#39; 
print &#39;<body>&#39; 
print &#39;<h2>Hello Word! 我是一个CGI程序</h2>&#39; 
print &#39;</body>&#39; 
print &#39;</html>&#39;
Nach dem Login kopieren

Auf diese Weise können Sie einen einfachen Hello World-Webseiteninhalt erhalten, indem Sie im Browser auf die Datei zugreifen. Das direkte Schreiben von Webanwendungen über CGI scheint einfach zu sein, da jede Datei die Eingabe verarbeitet und HTML generiert. Bei der tatsächlichen Entwicklung können jedoch viele Unannehmlichkeiten auftreten. Zum Beispiel:

Jedes unabhängige CGI-Skript schreibt möglicherweise wiederholt Datenbankverbindungs- und Schließcode. Back-End-Entwickler sehen eine Reihe von Inhaltstyp- und anderen HTML-Seitenelementen, die nichts mit sich selbst zu tun haben. Web-Framework

In den frühen Tagen wurde eine Menge sich wiederholender Arbeit geleistet, um die Website zu entwickeln. Um Duplikate zu reduzieren und das Schreiben von komplexem und verwirrendem Code zu vermeiden, extrahierten die Leute später die Schlüsselprozesse des Webs Entwicklung und entwickelte verschiedene A-Web-Frameworks. Mit einem Framework können Sie sich auf das Schreiben klaren, leicht zu wartenden Codes konzentrieren, ohne sich um sich wiederholende Arbeiten wie Datenbankverbindungen kümmern zu müssen.

Eines der klassischeren Web-Frameworks übernimmt die MVC-Architektur, wie in der folgenden Abbildung dargestellt:

Python 搭建Web站点之Web服务器与Web框架

MVC-Architektur

Der Benutzer gibt die URL ein, der Client sendet eine Anfrage, der Controller (Controller) erhält zuerst die Anfrage und verwendet dann die Modelle (Modelle), um alle erforderlichen Daten aus der Datenbank abzurufen, die erforderliche Verarbeitung durchzuführen und zu senden Die verarbeiteten Ergebnisse werden an die Ansicht (Ansicht) übermittelt. Die Ansicht verwendet die erhaltenen Daten zum Rendern und Generieren einer HTML-Antwort und gibt diese an den Client zurück.

Nehmen Sie als Beispiel das Python-Web-Framework flask. Das Framework selbst schränkt nicht ein, welche Architektur wir zum Organisieren unserer Anwendungen verwenden, aber flask kann die Organisation von Anwendungen auf MVC-Art gut unterstützen.

Controller: flask Sie können Dekoratoren verwenden, um Routing-Elemente wie folgt hinzuzufügen:

@app.route(&#39;/&#39;) 
def main_page(): 
  pass
Nach dem Login kopieren

Modell: Wird hauptsächlich zum Extrahieren dessen verwendet, was ist Benötigte Daten, wie in der folgenden Funktion ausgeführt:

@app.route(&#39;/&#39;) 
def main_page(): 
  """Searches the database for entries, then displays them.""" 
  db = get_db() 
  cur = db.execute(&#39;select * from entries order by id desc&#39;) 
  entries = cur.fetchall() 
  return render_template(&#39;index.html&#39;, entries=entries)
Nach dem Login kopieren

Ansicht: flask verwendet jinja2, um die Seite zu rendern. Die folgende Vorlagendatei gibt den Stil an Seite:

{% for entry in entries %} 
<li> 
 <h2>{{ entry.title }}</h2> 
 <p>{{ entry.text|safe }}</p> 
</li> 
{% else %} 
<li><em>No entries yet. Add some!</em></li> 
{% endfor %}
Nach dem Login kopieren

Wir wissen, dass Python viele Web-Frameworks und gleichzeitig viele Webserver hat (Apache, Nginx, Gunicorn usw.). .), zwischen Frameworks und Webservern. Wenn sie zur Entwurfszeit nicht miteinander übereinstimmen können, schränkt die Auswahl eines Frameworks die Auswahl an Webservern ein, was offensichtlich unvernünftig ist.

Wie können Sie also sicherstellen, dass Sie den Server Ihrer Wahl verwenden und mehrere verschiedene Netzwerk-Frameworks anpassen können, ohne den Webserver-Code oder den Netzwerk-Framework-Code zu ändern? Folgen Sie einfach der Benutzeroberfläche. Für Python ist es WSGI (Web Server Gateway Interface, Web Server Gateway Interface). Andere Programmiersprachen verfügen über ähnliche Schnittstellen: zum Beispiel Javas Servlet API und Rubys Rack.

Das Aufkommen von Python WSGI ermöglicht es Entwicklern, die Wahl zwischen Web-Framework und Webserver zu trennen und sich nicht mehr gegenseitig einzuschränken. Jetzt können Sie verschiedene Webserver und Web-Frameworks wirklich kombinieren und so die Kombination auswählen, die Ihren Anforderungen entspricht. Sie können beispielsweise Gunicorn oder Nginx/uWSGI verwenden, um Django-, Flask- oder web.py-Anwendungen auszuführen.

Python 搭建Web站点之Web服务器与Web框架

Weitere Artikel zum Python-Webserver und Web-Framework zum Erstellen einer Website finden Sie auf der chinesischen PHP-Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So verwenden Sie Python, um die ZiPF -Verteilung einer Textdatei zu finden So verwenden Sie Python, um die ZiPF -Verteilung einer Textdatei zu finden Mar 05, 2025 am 09:58 AM

Dieses Tutorial zeigt, wie man Python verwendet, um das statistische Konzept des Zipf -Gesetzes zu verarbeiten, und zeigt die Effizienz des Lesens und Sortierens großer Textdateien von Python bei der Bearbeitung des Gesetzes. Möglicherweise fragen Sie sich, was der Begriff ZiPF -Verteilung bedeutet. Um diesen Begriff zu verstehen, müssen wir zunächst das Zipf -Gesetz definieren. Mach dir keine Sorgen, ich werde versuchen, die Anweisungen zu vereinfachen. Zipf -Gesetz Das Zipf -Gesetz bedeutet einfach: In einem großen natürlichen Sprachkorpus erscheinen die am häufigsten vorkommenden Wörter ungefähr doppelt so häufig wie die zweiten häufigen Wörter, dreimal wie die dritten häufigen Wörter, viermal wie die vierten häufigen Wörter und so weiter. Schauen wir uns ein Beispiel an. Wenn Sie sich den Brown Corpus in amerikanischem Englisch ansehen, werden Sie feststellen, dass das häufigste Wort "Th ist

Wie benutze ich eine schöne Suppe, um HTML zu analysieren? Wie benutze ich eine schöne Suppe, um HTML zu analysieren? Mar 10, 2025 pm 06:54 PM

In diesem Artikel wird erklärt, wie man schöne Suppe, eine Python -Bibliothek, verwendet, um HTML zu analysieren. Es beschreibt gemeinsame Methoden wie find (), find_all (), select () und get_text () für die Datenextraktion, die Behandlung verschiedener HTML -Strukturen und -Anternativen (SEL)

Bildfilterung in Python Bildfilterung in Python Mar 03, 2025 am 09:44 AM

Der Umgang mit lauten Bildern ist ein häufiges Problem, insbesondere bei Mobiltelefonen oder mit geringen Auflösungskamera-Fotos. In diesem Tutorial wird die Bildfilterungstechniken in Python unter Verwendung von OpenCV untersucht, um dieses Problem anzugehen. Bildfilterung: Ein leistungsfähiges Werkzeug Bildfilter

Wie man mit PDF -Dokumenten mit Python arbeitet Wie man mit PDF -Dokumenten mit Python arbeitet Mar 02, 2025 am 09:54 AM

PDF-Dateien sind für ihre plattformübergreifende Kompatibilität beliebt, wobei Inhalte und Layout für Betriebssysteme, Lesegeräte und Software konsistent sind. Im Gegensatz zu Python Processing -Klartextdateien sind PDF -Dateien jedoch binäre Dateien mit komplexeren Strukturen und enthalten Elemente wie Schriftarten, Farben und Bilder. Glücklicherweise ist es nicht schwierig, PDF -Dateien mit Pythons externen Modulen zu verarbeiten. In diesem Artikel wird das PYPDF2 -Modul verwendet, um zu demonstrieren, wie Sie eine PDF -Datei öffnen, eine Seite ausdrucken und Text extrahieren. Die Erstellung und Bearbeitung von PDF -Dateien finden Sie in einem weiteren Tutorial von mir. Vorbereitung Der Kern liegt in der Verwendung von externem Modul PYPDF2. Installieren Sie es zunächst mit PIP: pip ist p

Wie kann man mit Redis in Django -Anwendungen zwischenstrichen Wie kann man mit Redis in Django -Anwendungen zwischenstrichen Mar 02, 2025 am 10:10 AM

Dieses Tutorial zeigt, wie man Redis Caching nutzt, um die Leistung von Python -Anwendungen zu steigern, insbesondere innerhalb eines Django -Frameworks. Wir werden Redis -Installation, Django -Konfiguration und Leistungsvergleiche abdecken, um den Vorteil hervorzuheben

Wie führe ich ein tiefes Lernen mit Tensorflow oder Pytorch durch? Wie führe ich ein tiefes Lernen mit Tensorflow oder Pytorch durch? Mar 10, 2025 pm 06:52 PM

Dieser Artikel vergleicht TensorFlow und Pytorch für Deep Learning. Es beschreibt die beteiligten Schritte: Datenvorbereitung, Modellbildung, Schulung, Bewertung und Bereitstellung. Wichtige Unterschiede zwischen den Frameworks, insbesondere bezüglich des rechnerischen Graps

So implementieren Sie Ihre eigene Datenstruktur in Python So implementieren Sie Ihre eigene Datenstruktur in Python Mar 03, 2025 am 09:28 AM

Dieses Tutorial zeigt, dass eine benutzerdefinierte Pipeline -Datenstruktur in Python 3 erstellt wird, wobei Klassen und Bedienerüberladungen für verbesserte Funktionen genutzt werden. Die Flexibilität der Pipeline liegt in ihrer Fähigkeit, eine Reihe von Funktionen auf einen Datensatz GE anzuwenden

Einführung in die parallele und gleichzeitige Programmierung in Python Einführung in die parallele und gleichzeitige Programmierung in Python Mar 03, 2025 am 10:32 AM

Python, ein Favorit für Datenwissenschaft und Verarbeitung, bietet ein reichhaltiges Ökosystem für Hochleistungs-Computing. Die parallele Programmierung in Python stellt jedoch einzigartige Herausforderungen dar. Dieses Tutorial untersucht diese Herausforderungen und konzentriert sich auf die globale Interprete

See all articles