Login

Allow configurable subdirectory django deployment

Author:
EmilStenstrom
Posted:
July 30, 2010
Language:
Python
Version:
Not specified
Tags:
deployment subdirectory subfolder
Score:
2 (after 2 ratings)

I wanted a way to deploy a Django site to both the root of a domain, and to a subdirectory. The solution was to loop over all urlpatterns and add a configurable string (URL_PREFIX) at the beginning of all patterns.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# In your settings.py

URL_PREFIX = "/subdirectory"


# At the bottom of your urls.py

# Prefix all the above patterns with URL_PREFIX
# Note: All urls must begin with ^, and URL_PATTERN must begin with /
if settings.URL_PREFIX:
    prefixed_urlpattern = []
    for pat in urlpatterns:
        pat.regex = re.compile(r"^%s/%s" % (settings.URL_PREFIX[1:], pat.regex.pattern[1:]))
        prefixed_urlpattern.append(pat)
    urlpatterns = prefixed_urlpattern

More like this

  1. Easy configuration for relocatable sites by gsakkis 4 years, 11 months ago
  2. staticview for app by limodou 8 years, 1 month ago
  3. Keep settings.py in version control safely by mboersma 8 years, 4 months ago
  4. Serve static media files from app/media subdirectory by adamlofts 6 years, 12 months ago
  5. fabric wsgi deployment strategy by hedde 9 months, 1 week ago

Comments

lallulli (on October 27, 2010):

I suggest another way, which is simpler and more pythonic IMHO.

In your urls.py rename urlpatterns to base_urlpatterns; then add the followinig definition at the end of the same file:

urlpatterns = patterns('',
    '^', include(base_urlpatterns), # iff you wish to maintain the un-prefixed URL's too
    '^your_prefix/', include(base_urlpatterns),
)

#

EmilStenstrom (on February 12, 2013):

@lallulli: I agree, your solution is much better!

#

Please login first before commenting.