Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Django request-response

Imanol Cea
November 21, 2015

Django request-response

Presentación de la charla dada en la PyCon ES 2015.

Resumen del ciclo de vida de una request/response dentro de Django

Imanol Cea

November 21, 2015
Tweet

More Decks by Imanol Cea

Other Decks in Programming

Transcript

  1. Django Request-Response
    Un viaje de ida y vuelta
    @imanolcg
    Imanol Cea

    View full-size slide

  2. @ticketeaEng

    View full-size slide

  3. Client
    WSGI
    Middlewares
    URL Resolver
    View
    Web server
    HttpRequest
    HttpResponse
    Context processors
    Templates

    View full-size slide

  4. ¡Pongamos orden en este caos!
    Client

    View full-size slide

  5. ¡Pongamos orden en este caos!
    Client
    Web server

    View full-size slide

  6. ¡Pongamos orden en este caos!
    Client
    Web server
    WSGI

    View full-size slide

  7. ¡Pongamos orden en este caos!
    Client
    Web server
    WSGI

    View full-size slide

  8. WSGI (Web Server Gateway interface)*
    - ¿Qué es?
    * https://www.python.org/dev/peps/pep-0333/
    - ¿Por qué surge?
    https://www.python.org/dev/peps/

    View full-size slide

  9. WSGI (Web Server Gateway interface)*
    https://github.com/django/django/blob/master/django/core/handlers/wsgi.py

    View full-size slide

  10. Middlewares
    - Sistema de plugins para alterar request y/o response
    - Encargados de realizar tareas muy específicas
    https://www.python.org/dev/peps/pep-0333/#id13
    - El orden de los mismos es MUY importante

    View full-size slide

  11. Middlewares
    https://github.com/django/django/blob/master/django/core/handlers/base.py#L106

    View full-size slide

  12. ¡Pongamos orden en este caos!
    Client
    Web server
    WSGI
    Request
    middleware

    View full-size slide

  13. Recordando fantasmas del pasado….
    https://docs.djangoproject.com/en/1.8/ref/request-response/#django.http.HttpRequest.REQUEST

    View full-size slide

  14. ¡Pongamos orden en este caos!
    Client
    Web server
    WSGI
    Request
    middleware

    View full-size slide

  15. ¡Pongamos orden en este caos!
    Client
    Web server
    WSGI
    Request
    middleware
    URL Resolution

    View full-size slide

  16. ¡Pongamos orden en este caos!
    Client
    Web server
    WSGI
    Request
    middleware
    URL Resolution
    View
    middleware

    View full-size slide

  17. ¡Pongamos orden en este caos!
    Client
    Web server
    WSGI
    Request
    middleware
    URL Resolution
    View
    middleware
    View

    View full-size slide

  18. ¡Pongamos orden en este caos!
    Client
    Web server
    WSGI
    Request
    middleware
    URL Resolution
    View
    middleware
    View
    Response
    middleware

    View full-size slide

  19. ¡Pongamos orden en este caos!
    Client
    Web server
    WSGI
    Request
    middleware
    URL Resolution
    View
    middleware
    View
    Response
    middleware
    Exception
    middleware

    View full-size slide

  20. ¡Pongamos orden en este caos!
    Client
    Web server
    WSGI
    Request
    middleware
    URL Resolution
    View
    middleware
    View
    Response
    middleware
    Exception
    middleware
    WSGI

    View full-size slide

  21. ¡Pongamos orden en este caos!
    Client
    Web server
    WSGI
    Request
    middleware
    URL Resolution
    View
    middleware
    View
    Response
    middleware
    Exception
    middleware
    WSGI
    Web server

    View full-size slide

  22. ¡Pongamos orden en este caos!
    Client
    Web server
    WSGI
    Request
    middleware
    URL Resolution
    View
    middleware
    View
    Response
    middleware
    Exception
    middleware
    WSGI
    Web server
    Client

    View full-size slide

  23. ¡Pongamos orden en este caos!
    Client
    Web server
    WSGI
    Request
    middleware
    URL Resolution
    View
    middleware
    View
    Response
    middleware
    Exception
    middleware
    WSGI
    Web server
    Client

    View full-size slide

  24. ¡Pongamos orden en este caos!
    Client
    Web server
    WSGI
    Request
    middleware
    URL Resolution
    View
    middleware
    View
    Response
    middleware
    Exception
    middleware
    WSGI
    Web server
    Client

    View full-size slide

  25. Una teoría interesante pero…
    ¿Todo esto sirve para algo?

    View full-size slide

  26. Un caso de uso
    Necesitamos redirigir usuarios a otro dominio

    View full-size slide

  27. Un caso de uso
    Necesitamos redirigir usuarios a otro dominio
    - Solo peticiones desde la IP oficina

    View full-size slide

  28. Un caso de uso
    Necesitamos redirigir usuarios a otro dominio
    - Solo peticiones desde la IP oficina
    Demos la opción de ir a la nueva página solo al 10% de los usuarios
    - Solo si el idioma es español o inglés
    - Solo si entra en la web a través de .com
    - Además, una vez vaya a la nueva web no hay vuelta atrás!

    View full-size slide

  29. Un caso de uso

    View full-size slide

  30. Un caso de uso

    View full-size slide

  31. GRACIAS!
    @imanolcg
    Imanol Cea

    View full-size slide