Django-生产和开发使用不同的 URL?

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/

因此实际上外界甚至不知道我的额外链接的存在,因为他们无法访问它们。

这可能吗?

答案1

我会这样做

在您的 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
   #
)

答案2

Django 定义ROOT_URLCONF此用例的参数。开发和生产环境的不同 URL 集示例:创建两个不同的urls模块,例如urls_devurls_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_devsettings_prod,每个模块定义自己的ROOT_URLCONF。然后使用选定的设置启动服务器:

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

相关内容