#35312: staticurl_urlpatterns incorrectly uses STATIC_URL that prefixed using
SCRIPT_NAME
-----------------------------------------------+------------------------
               Reporter:  yudhiwidyatama       |          Owner:  nobody
                   Type:  Bug                  |         Status:  new
              Component:  contrib.staticfiles  |        Version:  5.0
               Severity:  Normal               |       Keywords:
           Triage Stage:  Unreviewed           |      Has patch:  0
    Needs documentation:  0                    |    Needs tests:  0
Patch needs improvement:  0                    |  Easy pickings:  0
                  UI/UX:  0                    |
-----------------------------------------------+------------------------
 Deploying Django using Gunicorn with SCRIPT_NAME set to '/django', we get
 the url for static resources are correctly generated with
 '/django/static/' prefix, but the static url patterns is also prefixed
 with the '/django/static/'. This is wrong because url patterns will be
 compared with the PATH_INFO part of the URL without the script_name
 prefix.

 Reproduce step :
 1. create a django app with static directory containing image or css
 files.
 2. append static url pattern to site's urls.py by either appending
 urlpatterns += staticfiles_urlpatterns()
 or
 urlpatterns += static(settings.STATIC_URL,
 document_root=settings.STATIC_ROOT)
 (refer: https://docs.djangoproject.com/en/5.0/howto/static-files/)
 3. serve using gunicorn by previously setting SCRIPT_NAME environment
 variable to /django
 4. access the url served by gunicorn
 (http://localhost:8000/django/<appname>)
 5. the application urls are served under /django prefix, the generated
 static urls also having the /django/static prefix.
 6. accessing application url, gunicorn correctly renders pages, but not
 the static content

 suggestion :
 a. change staticfiles_urlpatterns() in contrib/staticfiles/urls.py  to
 check whether the urlpatterns prefix starts with get_script_prefix(), and
 if so, strip the get_script_prefix() part from prefix
 b. or change the settings.STATIC_URL in the howto page with expression
 that strips the SCRIPT_NAME part or get_script_prefix() part.
-- 
Ticket URL: <https://code.djangoproject.com/ticket/35312>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/0107018e46f4200b-7bb91f4d-9e58-41ad-aaf5-283d115cd214-000000%40eu-central-1.amazonses.com.

Reply via email to