Pour toutes les applications Web, il s'agit essentiellement d'un serveur socket, et le navigateur de l'utilisateur est en fait un client socket.
Un programme Web simple :
#!/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()
Les programmes Web Python sont généralement divisés en programmes serveur et programmes d'application. Le programme serveur est chargé d'encapsuler le serveur de socket et de trier diverses données demandées lorsque la demande arrive. L'application est responsable d'un traitement logique spécifique. Afin de faciliter le développement d’applications, de nombreux frameworks web ont vu le jour. Par exemple Django, Flask, web.py, etc.
Différents frameworks ont des méthodes de développement différentes, mais quoi qu'il en soit, l'application développée doit coopérer avec le programme serveur pour fournir des services aux utilisateurs. De cette façon, le programme serveur doit fournir un support différent pour différents frameworks. Une situation aussi chaotique n’est bonne ni pour le serveur ni pour le framework. Pour les serveurs, il est nécessaire de prendre en charge divers frameworks. Pour les frameworks, seuls les serveurs qui le supportent peuvent être utilisés par les applications développées. À l’heure actuelle, la normalisation devient particulièrement importante. Nous pouvons établir un standard tant que le programme serveur prend en charge ce standard et que le framework prend également en charge ce standard, ils peuvent alors être utilisés ensemble. Une fois les normes déterminées, les deux parties les mettent en œuvre individuellement. De cette manière, le serveur peut prendre en charge davantage de frameworks prenant en charge les normes, et le framework peut utiliser davantage de serveurs prenant en charge les normes.
WSGI
interface de passerelle de serveur Web est une spécification qui définit le format d'interface entre l'application Web et le serveur Web écrit en python, réalisant l'application Web et le découplage entre les serveurs Web.
Le serveur wsgi indépendant fourni par la bibliothèque standard python s'appelle 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()
Framework web personnalisé
Développer son propre web grâce au module wsgiref fourni par le standard python Cadre bibliothèque
#!/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()
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!