FAQ:使用 Django¶
為什麼我會收到有關導入 DJANGO_SETTINGS_MODULE
的錯誤?¶
請確認:
環境變數
DJANGO_SETTINGS_MODULE
設定為完整的 Python 模組 (例如mysite.settings
)。該模組位於
sys.path
中 (import mysite.settings
應該可以正常運作)。該模組不包含語法錯誤。
我無法忍受你們的樣板語言。我一定要用它嗎?¶
我們碰巧認為我們的樣板引擎是繼厚切培根之後最棒的東西,但我們承認選擇樣板語言接近於宗教信仰。Django 並沒有任何規定一定要使用樣板語言,所以如果您鍾情於 Jinja2、Mako 或其他任何東西,請隨意使用。
我一定要用你們的模型/資料庫層嗎?¶
不用。如同樣板系統,模型/資料庫層與框架的其他部分是分離的。
唯一的例外是:如果您使用不同的資料庫函式庫,您將無法使用 Django 自動產生的管理網站。該應用程式與 Django 資料庫層耦合。
我該如何使用圖片和檔案欄位?¶
在模型中使用 FileField
或 ImageField
需要幾個步驟:
在您的設定檔中,您需要將
MEDIA_ROOT
定義為您希望 Django 儲存上傳檔案的目錄的完整路徑。(為了效能,這些檔案不會儲存在資料庫中。) 將MEDIA_URL
定義為該目錄的基本公開 URL。請確保網頁伺服器的使用者帳戶對此目錄具有寫入權限。將
FileField
或ImageField
新增至您的模型,並定義upload_to
選項,以指定MEDIA_ROOT
的子目錄,用於上傳的檔案。所有儲存在您資料庫中的僅會是檔案的路徑 (相對於
MEDIA_ROOT
)。您很可能會想要使用 Django 提供的方便的url
屬性。例如,如果您的ImageField
稱為mug_shot
,您可以在樣板中使用{{ object.mug_shot.url }}
來取得圖片的絕對路徑。
我該如何讓變數在所有樣板中都可用?¶
有時您的所有樣板都需要相同的東西。一個常見的例子是動態產生的選單。乍看之下,將一個通用的字典新增至樣板上下文似乎很合乎邏輯。
在 Django 中執行此操作的最佳方法是使用 RequestContext
。有關如何執行此操作的詳細資訊在此:使用 RequestContext。