Eu faria assim
No seu settings.py defina o seguinte
LOCAL_DEV = True
depois no seu urls.py
from django.conf import settings
if settings.LOCAL_DEV:
urlpatterns = patterns('',
#
# all your other urls here for dev
#
)
É possível ter dois arquivos urls.py diferentes para um projeto, usando um deles o tempo todo, mas invocando o segundo para fins de desenvolvimento?
O que eu quero é isso:
Para produção (e é ao vivo 24/7), eu quero os seguintes links:
www.mydomain.com
www.mydomain.com/about/
www.mydomain.com/contact/
Mas para o desenvolvimento (que eu uso o runserver
agora e depois como eu testei) eu quero todos os links básicos, além de mais alguns:
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/
Então, efetivamente, o mundo exterior nem sabe que meus links extras existem, já que eles não têm acesso a eles.
Isso é possível?
O Django define o parâmetro ROOT_URLCONF
para este caso de uso. Exemplo para diferentes conjuntos de URLs para ambiente de desenvolvimento e produção: crie dois módulos urls
diferentes, por exemplo, urls_dev
e urls_prod
com diferentes urlpatterns
. Estrutura do projeto:
myproj
├── models.py
├── views.py
├── ...
├── urls_dev.py
└── urls_prod.py
Nas suas configurações, redefina ROOT_URLCONF
dependendo do ambiente em que você está:
# settings.py
if os.environ.get('DEVELOPMENT', None):
ROOT_URLCONF = 'myproj.urls_dev'
else:
ROOT_URLCONF = 'myproj.urls_prod'
ou até mesmo dividir as configurações individuais em dois módulos diferentes, settings_dev
e settings_prod
, cada um definindo seu próprio ROOT_URLCONF
. Em seguida, inicie o servidor com as configurações selecionadas:
$ django-admin runserver --settings=myproj.settings_dev