Django

Django - 生產和開發的不同 URL?

  • March 28, 2018

是否可以為一個項目有兩個不同的 urls.py 文件,一直使用其中一個,然後出於開發目的呼叫第二個文件?

我想要的是這樣的:

對於生產(並且是 24/7 直播),我想要以下連結:

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
  #
)

DjangoROOT_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_dev並且settings_prod每個模組都定義了自己的ROOT_URLCONF. 然後使用選定的設置啟動伺服器:

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

引用自:https://serverfault.com/questions/305501