Bei allen Webanwendungen handelt es sich im Wesentlichen um einen Socket-Server, und der Browser des Benutzers ist tatsächlich ein Socket-Client.
Ein einfaches Webprogramm:
#!/usr/bin/env python #coding:utf-8 import socket def handle_request(client): buf = client.recv(1024) client.send("HTTP/1.1 200 OK\r\n\r\n") client.send("Hello, Seven") def main(): sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.bind(('localhost',8000)) sock.listen(5) while True: connection, address = sock.accept() handle_request(connection) connection.close() if __name__ == '__main__': main()
Python-Webprogramme werden im Allgemeinen in Serverprogramme und Anwendungsprogramme unterteilt. Das Serverprogramm ist dafür verantwortlich, den Socket-Server zu kapseln und verschiedene angeforderte Daten zu sortieren, wenn die Anfrage eintrifft. Die Anwendung ist für die spezifische logische Verarbeitung verantwortlich. Um die Entwicklung von Anwendungen zu erleichtern, sind viele Web-Frameworks entstanden. Zum Beispiel Django, Flask, web.py usw.
Unterschiedliche Frameworks haben unterschiedliche Entwicklungsmethoden, aber egal was passiert, die entwickelte Anwendung muss mit dem Serverprogramm zusammenarbeiten, um den Benutzern Dienste bereitzustellen. Auf diese Weise muss das Serverprogramm unterschiedliche Unterstützung für unterschiedliche Frameworks bereitstellen. Eine solch chaotische Situation ist weder für den Server noch für das Framework gut. Für Server ist die Unterstützung verschiedener Frameworks erforderlich. Für Frameworks können von entwickelten Anwendungen nur Server verwendet werden, die dies unterstützen. Zu diesem Zeitpunkt kommt der Standardisierung eine besondere Bedeutung zu. Wir können einen Standard einrichten, solange das Serverprogramm diesen Standard unterstützt und das Framework diesen Standard auch unterstützt, dann können sie zusammen verwendet werden. Sobald die Standards festgelegt sind, setzen beide Parteien diese individuell um. Auf diese Weise kann der Server mehr standardunterstützende Frameworks unterstützen und das Framework kann mehr standardunterstützende Server verwenden.
WSGI
Webserver-Gateway-Schnittstelle ist eine in Python geschriebene Spezifikation, die das Schnittstellenformat zwischen Web-App und Webserver definiert und Web-App und Entkopplung zwischen Webservern realisiert.
Der unabhängige wsgi-Server, der von der Python-Standardbibliothek bereitgestellt wird, heißt wsgiref
#!/usr/bin/env python #coding:utf-8 from wsgiref.simple_server import make_server def RunServer(environ, start_response): start_response('200 OK', [('Content-Type', 'text/html')]) return '<h1>Hello, web!</h1>' if __name__ == '__main__': httpd = make_server('', 8000, RunServer) print "Serving HTTP on port 8000..." httpd.serve_forever()
Benutzerdefiniertes Web-Framework
Entwickeln Sie ein eigenes Web mit dem wsgiref-Modul, das vom Python-Standard bereitgestellt wird Bibliotheksrahmen
#!/usr/bin/env python #coding:utf-8 from wsgiref.simple_server import make_server def index(): return 'index' def login(): return 'login' def routers(): urlpatterns = ( ('/index/',index), ('/login/',login), ) return urlpatterns def RunServer(environ, start_response): start_response('200 OK', [('Content-Type', 'text/html')]) url = environ['PATH_INFO'] urlpatterns = routers() func = None for item in urlpatterns: if item[0] == url: func = item[1] break if func: return func() else: return '404 not found' if __name__ == '__main__': httpd = make_server('', 8000, RunServer) print "Serving HTTP on port 8000..." httpd.serve_forever()
Das obige ist der detaillierte Inhalt vonZusammenfassung des grundlegenden Django-Tutorials. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!