Maison >développement back-end >Tutoriel Python >Résumé du didacticiel de base de Django

Résumé du didacticiel de base de Django

WBOY
WBOYoriginal
2017-06-28 12:00:241274parcourir

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 &#39;<h1>Hello, web!</h1>&#39;
if __name__ == &#39;__main__&#39;:
    httpd = make_server(&#39;&#39;, 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 &#39;index&#39;
def login():
    return &#39;login&#39;
def routers():
    
    urlpatterns = (
        (&#39;/index/&#39;,index),
        (&#39;/login/&#39;,login),
    )
    
    return urlpatterns
def RunServer(environ, start_response):
    start_response(&#39;200 OK&#39;, [(&#39;Content-Type&#39;, &#39;text/html&#39;)])
    url = environ[&#39;PATH_INFO&#39;]
    urlpatterns = routers()
    func = None
    for item in urlpatterns:
        if item[0] == url:
            func = item[1]
            break 
    if func:
        return func()
    else:
        return &#39;404 not found&#39;
    
if __name__ == &#39;__main__&#39;:
    httpd = make_server(&#39;&#39;, 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn