すべての Web アプリケーションは本質的にソケット サーバーであり、ユーザーのブラウザは実際にはソケット クライアントです。
簡単な Web プログラム:
#!/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 Web プログラムは、一般にサーバー プログラムとアプリケーション プログラムに分けられます。サーバー プログラムは、ソケット サーバーをカプセル化し、要求が来たときに要求されたさまざまなデータを分類する責任があります。アプリケーションは特定の論理処理を担当します。アプリケーションの開発を容易にするために、多くの Web フレームワークが登場しました。たとえば、Django、Flask、web.py などです。
フレームワークが異なれば開発方法も異なりますが、いずれにしても、開発されたアプリケーションはサーバープログラムと連携してユーザーにサービスを提供する必要があります。このように、サーバー プログラムは、フレームワークごとに異なるサポートを提供する必要があります。このような混沌とした状況はサーバーにとってもフレームワークにとっても良くありません。サーバーの場合、さまざまなフレームワークをサポートする必要があり、フレームワークの場合、開発されたアプリケーションはそれをサポートするサーバーのみを使用できます。現時点では、標準化が特に重要になります。サーバー プログラムがその標準をサポートし、フレームワークもこの標準をサポートしている限り、標準を設定できます。それらは一緒に使用できます。標準が決定されると、両当事者はそれを個別に実装します。このようにして、サーバーは標準をサポートするより多くのフレームワークをサポートでき、フレームワークは標準をサポートするより多くのサーバーを使用できます。
WSGI
Webサーバーゲートウェイインターフェースとは、WebアプリとWebサーバー間の分離を実現するために、Pythonで記述されたWebアプリとWebサーバー間のインターフェース形式を定義する仕様です。
Python標準ライブラリによって提供される独立したwsgiサーバーは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()
カスタムWebフレームワーク
Python標準ライブラリによって提供されるwsgirefモジュールを通じて独自のWebフレームワークを開発します
#!/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()
以上がDjango の基本チュートリアルの概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。