2012-08-01 47 views
1

我是Python和Django的新手,並且在過去的幾個星期裏成功設置了我的第一個部署 - 一個非常基本的用戶身份驗證網站和幾個頁面,我希望在接下來的幾周內填充內容。如何在開發和部署中使用不同的數據庫主機?

我已經設法找到我到目前爲止通過搜索Google/StackOverflow/Django文檔等找到的大概40多個問題的答案,但現在我有一個我似乎無法找到一個好答案(也許因爲我不知道如何最好地搜索它):當我在本地機器上開發時,我需要使用我的settings.py文件指向遠程數據庫('HOST': 'www.mysite.com',),但是當我部署到共享託管服務提供者時,他們需要使用localhost(在settings.py中爲'HOST': '',)。

由於我將我的代碼託管在GitHub上並希望將其鏡像到服務器,是否有解決此問題的方法,因此我無需在每次將更改上載到服務器後手動編輯settings.py ?

+0

如果沒有辦法在Django中指定不同的環境DB,我建議只取出源代碼管理settings.py文件 – 2012-08-01 18:16:41

+0

https://code.djangoproject.com/wiki/SplitSettings有一些方法。我個人使用[這種方法](https://code.djangoproject.com/wiki/SplitSettings#Multiplesettingfilesimportingfromeachother)。 – Dougal 2012-08-01 18:16:52

+0

您確定要在開發時使用生產數據庫嗎?這聽起來像個壞主意。安裝本地數據庫並使用它。 – 2012-08-01 18:25:07

回答

1

您可以有兩份settings.py文件,一份用於生產,另一份用於開發。無論您需要在默認情況下,將其命名爲settings.py

只需設置DJANGO_SETTINGS_MODULE蟒蛇路徑爲您想使用的文件。

所以,如果你的設置文件是myproject/settings.py, myproject/settings_dev.py;那麼你可以這樣做:

$ DJANGO_SETTINGS_MODULE=settings_dev python manage.py shell

myproject目錄。

+0

非常感謝,這非常有幫助。我試了一下,它的工作。我使用'./manage.py runserver --settings = mysite.settings_dev'運行我的開發服務器。 – 2012-08-01 18:47:29

0

您可以創建一個local_settings.py文件,您可以將其放入.gitignore並將其包含在原始settings.py中。把每一個環境敏感的變量在此文件(數據庫,DEBUG,高速緩存,MEDIA_URL等)

在settings.py:

try: 
    from local_settings import * 
except ImportError: 
    pass 

在的.gitignore:

*/local_settings.py 

我建議你將一個local_settings.py.example放在gitrepo中的設置文件旁邊。通過這種方式,只要您需要複製此示例並更改必要的行,就可以將其部署到新環境中。

相關問題