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

Staticfiles : tout ce qu'il faut savoir, rien que ce qu'il faut savoir

Staticfiles : tout ce qu'il faut savoir, rien que ce qu'il faut savoir

Bruno Renié

April 14, 2012
Tweet

More Decks by Bruno Renié

Other Decks in Programming

Transcript

  1. Staticfiles
    tout
    rien que
    ce qu'il faut savoir
    Bruno Renié
    Djangocong 2012

    View Slide

  2. Django >= 1.4
    django-staticfiles >= 1.2

    View Slide

  3. MEDIA
    STATIC
    données dynamiques
    données statiques
    wat

    View Slide

  4. STATIC_ROOT
    STATIC_URL
    STATICFILES_FINDERS
    STATICFILES_DIRS
    STATICFILES_STORAGE
    django-admin.py collectstatic

    View Slide

  5. STATIC_ROOT
    STATIC_URL
    STATICFILES_FINDERS
    STATICFILES_DIRS
    STATICFILES_STORAGE
    django-admin.py collectstatic

    View Slide

  6. Layout
    project/
    app1/static/style.css
    app2/static/jquery.js
    app1 static
    app2 static

    View Slide

  7. Configuration minimale
    # settings.py
    STATIC_URL = '/static/'
    # urls.py
    from django.contrib.staticfiles.urls \
    import staticfiles_urlpatterns
    urlpatterns += staticfiles_urlpatterns()
    # settings.py
    # urls.py

    View Slide

  8. et c'est
    tout

    View Slide

  9. Référencer un fichier
    {% load staticfiles %}
    {% static "jquery.js" %}
    staticfiles
    static

    View Slide

  10. app1/static/foo.css
    app2/static/foo.css
    {% static "foo.css" %}
    Conflits
    Comme les templates
    foo.css
    foo.css
    "foo.css"

    View Slide

  11. Namespaces
    Applications réutilisables / éviter les conflits
    app1/static/app1/foo.css
    app2/static/app2/foo.css
    {% static "app2/foo.css" %}
    app1/foo.css
    app2/foo.css
    "app2/foo.css"

    View Slide

  12. STATICFILES_DIRS
    Applications non-standard

    View Slide

  13. En production
    # settings.py
    STATIC_ROOT = '/path/to/public/static'
    $ python manage.py collectstatic
    # settings.py

    View Slide

  14. et c'est
    tout

    View Slide

  15. Cache busting
    STATICFILES_STORAGE = (
    'django.contrib.'
    'staticfiles.storage.'
    'CachedStaticFilesStorage'
    )
    {% static "foo.css" %}

    /static/foo.1cc9fe7eb4b9.css

    View Slide

  16. {% static %}

    @brutasse

    View Slide