views:

88

answers:

1

I have a a django application which is being served from apache/mod_wsgi under www.mysite.com/mysite

suppose I redirect url "myapp" -> myapp/urls.py

so to visit it from apache I will visit www.mysite.com/mysite/myapp/page1
to visit it from dev server I will need to visit www.mysite.com/myapp/page1

it also means absolute URLs wil be different in both cases

so what is the best way to handle this , so that app works same way in apache and dev server?

A: 
  1. Don't embed absolute and/or non-computed URLs in your code or database. They will always come back and bite you on the ass.

  2. Use either an alternate settings.py, or have some logic in settings.py to tweak differences between development/staging/production. We use settings.py as the production file and dev/staging use a local_settings.py which is tested for in settings.py and, if present, overrides production settings in settings.py. This prevents alternate development settings from creeping into staging/production.

  3. Set a BASE_URL for the entire site and use it for everything else.

  4. We go a bit further and have STATIC_MEDIA_URL and BIG_CONTENT_URL (for MP3s and Flash video) as the base URLs for other stuff.

All of this allows us to use whatever server is right for the moment. When I'm doing development I normally let the MEDIA come from the production servers (it's faster), but sometimes I'm doing a reorg of the media directories and I can't do it on production without breaking the world. So I just change my local_settings.py file to use my copy of the directories.

Peter Rowell