Назад | Перейти на главную страницу

Django - разные URL-адреса для производства и разработки?

Возможно ли иметь два разных файла urls.py для одного проекта, используя один из них все время, но затем вызывая второй для целей разработки?

Я хочу вот что:

Для производства (и работает круглосуточно) мне нужны следующие ссылки:

www.mydomain.com
www.mydomain.com/about/
www.mydomain.com/contact/

Но для разработки (которую я использую runserver время от времени, пока я тестирую), мне нужны все базовые ссылки плюс еще несколько:

www.mydomain.com
www.mydomain.com/about/
www.mydomain.com/contact/
www.mydomain.com/secret/sauce/
www.mydomain.com/punchanella/in/the/zoo/
www.mydomain.com/me/too/

Таким образом, внешний мир даже не знает, что мои лишние ссылки существуют, поскольку у них нет к ним доступа.

Это вообще возможно?

Я бы сделал это так

В вашем settings.py установите следующее

LOCAL_DEV = True

затем в вашем urls.py

from django.conf import settings
if settings.LOCAL_DEV:
  urlpatterns = patterns('',
   #
   # all your other urls here for dev
   #
)

Django определяет ROOT_URLCONF параметр для этого варианта использования. Пример различных наборов URL-адресов для среды разработки и производства: создайте два разных urls модули, например urls_dev и urls_prod с разными urlpatterns. Структура проекта:

myproj
├── models.py
├── views.py
├── ...
├── urls_dev.py
└── urls_prod.py

В своих настройках переопределите ROOT_URLCONF в зависимости от того, в какой среде вы сейчас находитесь:

# settings.py

if os.environ.get('DEVELOPMENT', None):
    ROOT_URLCONF = 'myproj.urls_dev'
else:
    ROOT_URLCONF = 'myproj.urls_prod'

или даже разделить отдельные настройки на два разных модуля, settings_dev и settings_prod, каждый определяет свой ROOT_URLCONF. Затем запустите сервер с выбранными настройками:

$ django-admin runserver --settings=myproj.settings_dev