모든 웹 애플리케이션은 기본적으로 소켓 서버이며 사용자의 브라우저는 실제로 소켓 클라이언트입니다.
간단한 웹 프로그램:
#!/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()
파이썬 웹 프로그램은 크게 서버 프로그램과 응용 프로그램으로 나누어집니다. 서버 프로그램은 소켓 서버를 캡슐화하고 요청이 오면 요청된 다양한 데이터를 정렬하는 역할을 담당합니다. 애플리케이션은 특정 논리 처리를 담당합니다. 애플리케이션 개발을 촉진하기 위해 많은 웹 프레임워크가 등장했습니다. 예를 들어 Django, Flask, web.py 등이 있습니다.
프레임워크마다 개발 방법이 다르지만, 어떤 경우에도 개발된 애플리케이션은 서버 프로그램과 협력하여 사용자에게 서비스를 제공해야 합니다. 이러한 방식으로 서버 프로그램은 다양한 프레임워크에 대해 다양한 지원을 제공해야 합니다. 이러한 혼란스러운 상황은 서버나 프레임워크에 좋지 않습니다. 서버의 경우 다양한 프레임워크를 지원해야 합니다. 프레임워크의 경우 이를 지원하는 서버만 개발된 애플리케이션에서 사용할 수 있습니다. 이때 표준화가 특히 중요해집니다. 서버 프로그램이 이 표준을 지원하고 프레임워크도 이 표준을 지원한다면 표준을 함께 사용할 수 있습니다. 표준이 결정되면 양 당사자는 이를 개별적으로 구현합니다. 이러한 방식으로 서버는 더 많은 표준 지원 프레임워크를 지원할 수 있으며 프레임워크는 더 많은 표준 지원 서버를 사용할 수 있습니다.
WSGI
웹 서버 게이트웨이 인터페이스는 웹 앱과 웹 서버 간의 분리를 달성하기 위해 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()
커스텀 웹 프레임워크
파이썬 표준 라이브러리에서 제공하는 wsgiref 모듈을 통해 자체 웹 프레임워크 개발
#!/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 중국어 웹사이트의 기타 관련 기사를 참조하세요!