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 Slide

  2. @ticketeaEng

    View Slide

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

    View Slide

  4. ¡Pongamos orden en este caos!
    Client

    View Slide

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

    View Slide

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

    View Slide

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

    View 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 Slide

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

    View 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 Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View 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 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 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 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 Slide

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

    View Slide

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

    View Slide

  27. View Slide

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

    View Slide

  29. 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 Slide

  30. Un caso de uso

    View Slide

  31. Un caso de uso

    View Slide

  32. GRACIAS!
    @imanolcg
    Imanol Cea

    View Slide