在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Python/ Django 的設置
編寫自定義存儲系統(tǒng)
高級
編寫你的第一個Django應用,第5部分
視圖層
Django管理文檔生成器
編寫你的第一個 Django 程序 第3部分
編寫你的第一個Django應用,第6部分
模型層
中間件
測試
數(shù)據(jù)庫訪問優(yōu)化
文件上傳
中間件
驗證器
基于類的內(nèi)建通用視圖
部署靜態(tài)文件
使用Django認證系統(tǒng)
高級教程:如何編寫可重用的應用
Model 類參考
Django 初探
使用Django輸出PDF
模型的實例
模型
文件上傳
進行原始的sql查詢
面向程序員
中間件
編寫數(shù)據(jù)庫遷移
TemplateResponse 和 SimpleTemplateResponse
異常
Django中的測試
基礎
管理器
File對象
URL調(diào)度器
加密簽名
國際化和本地化
日志
查詢集
django-admin 和 manage.py
使用基于類的視圖處理表單
聚合
內(nèi)建基于類的視圖的API
如何使用會話
部署 Django
其它
其它核心功能
高級
Django中的密碼管理
模型元選項
按需內(nèi)容處理
查找 API 參考
高級
Django 的快捷函數(shù)
Django 的設置
Admin
開發(fā)過程
新手入門
基于類的視圖
模型實例參考
信號
表單素材 ( <code>Media</code> 類)
自定義查找
常見的網(wǎng)站應用工具
模型
django.contrib.humanize
Django模版語言
點擊劫持保護
管理操作
編寫你的第一個 Django 程序 第2部分
Django安全
模式編輯器
多數(shù)據(jù)庫
部署
基于類的視圖
內(nèi)建的視圖
視圖裝飾器
面向設計師
編寫視圖
應用程序
如何使用WSGI 部署
參考
表單 API
文件儲存API
認證
國際化和本地化
錯誤報告
基礎
基礎
將遺留數(shù)據(jù)庫整合到Django
教程
Django異常
編寫你的第一個 Django 程序 第4部分
遷移
分頁
重定向應用
表單
從零開始
為模型提供初始數(shù)據(jù)
設置
使用Django輸出CSV
關聯(lián)對象參考
使用表單
Django 中的用戶認證
快速安裝指南
安全問題歸檔
數(shù)據(jù)庫函數(shù)
編寫自定義的django-admin命令
高級教程
管理文件
格式本地化
基于類的通用視圖 —— 索引
安全
系統(tǒng)檢查框架
為Django編寫首個補丁
模板層
Widgets
編寫你的第一個 Django 程序 第1部分
執(zhí)行查詢

Django 的設置

Django 的設置文件包含你安裝的Django 的所有配置。這頁文檔解釋設置是如何工作以及有哪些設置。

基礎

設置文件只是一個Python 模塊,帶有模塊級別的變量。

下面是一些示例設置:

ALLOWED_HOSTS = ['www.example.com']
DEBUG = False
DEFAULT_FROM_EMAIL = 'webmaster@example.com'

如果你設置DEBUGFalse,那么你應該正確設置ALLOWED_HOSTS 的值。

因為設置文件是一個Python 模塊,所以適用以下情況:

  • 不允許出現(xiàn)Python 語法錯誤。
  • 它可以使用普通的Python 語法動態(tài)地設置。例如:
MY_SETTING = [str(i) for i in range(30)]
  • 它可以從其它設置文件導入值。

指定設置文件

DJANGO_SETTINGS_MODULE

當你使用Django 時,你必須告訴它你正在使用哪個設置。這可以使用環(huán)境變量DJANGO_SETTINGS_MODULE 來實現(xiàn)。

DJANGO_SETTINGS_MODULE 的值應該使用Python 路徑的語法,例如mysite.settings。注意,設置模塊應該在Python 的導入查找路徑 中。

django-admin 工具

當使用django-admin 時, 你可以設置只設置環(huán)境變量一次,或者每次運行該工具時顯式傳遞設置模塊。

例如(Unix Bash shell):

export DJANGO_SETTINGS_MODULE=mysite.settings
django-admin runserver

例如(Windows shell):

set DJANGO_SETTINGS_MODULE=mysite.settings
django-admin runserver

使用--settings 命令行參數(shù)可以手工指定設置:

django-admin runserver --settings=mysite.settings

在服務器上(mod_wsgi)

在線上服務器環(huán)境中,你需要告訴WSGI 的application 使用哪個設置文件。可以使用os.environ 實現(xiàn):

import os

os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'

閱讀Django mod_wsgi 文檔 以獲得關于Django WSGI application 的更多和其它常見信息。

默認的設置

Django 的設置文件不需要定義所有的設置。每個設置都有一個合理的默認值。這些默認值位于django/conf/global_settings.py 模塊中。

下面是Django 用來編譯設置的算法:

  • global_settings.py 中加載設置。
  • 從指定的設置文件中加載設置,如有必要則覆蓋全局的設置。

注意,設置文件不 應該從global_settings 中導入,因為這是多余的。

查看改變的設置

有一個簡單的方法可以查看哪些設置與默認的設置不一樣了。python manage.py diffsettings 命令顯示當前的設置文件和Django 默認設置之間的差異。

獲取更多信息,查看diffsettings 的文檔。

在Python 代碼中使用設置

在Django 應用中,可以通過導入django.conf.settings 對象來使用設置。例如:

from django.conf import settings

if settings.DEBUG:
    # Do something

注意,django.conf.settings 不是一個模塊 —— 它是一個對象。所以不可以導入每個單獨的設置:

from django.conf.settings import DEBUG  # This won't work.

還要注意,你的代碼不應該 從global_settings 或你自己的設置文件中導入。django.conf.settings 抽象出默認設置和站點特定設置的概念;它表示一個單一的接口。它還可以將代碼從你的設置所在的位置解耦出來。

運行時改變設置

請不要在應用運行時改變設置。例如,不要在視圖中這樣做:

from django.conf import settings

settings.DEBUG = True   # Don't do this!

給設置賦值的唯一地方是在設置文件中。

安全

因為設置文件包含敏感的信息,例如數(shù)據(jù)庫密碼,你應該盡一切可能來限制對它的訪問。例如,修改它的文件權限使得只有你和Web 服務器使用者可以讀取它。這在共享主機的環(huán)境中特別重要。

可用的設置

完整的可用設置清單,請參見設置參考

創(chuàng)建你自己的設置

沒有什么可以阻止你為自己的Django 應用創(chuàng)建自己的設置。只需要遵循下面的一些慣例:

  • 設置名稱全部是大寫
  • 不要使用一個已經(jīng)存在的設置

對于序列類型的設置,Django 自己使用元組而不是列表,但這只是一個習慣。

不用DJANGO_SETTINGS_MODULE 設置

有些情況下,你可能想繞開DJANGO_SETTINGS_MODULE 環(huán)境變量。例如,如果你正在使用自己的模板系統(tǒng),而你不想建立指向設置模塊的環(huán)境變量。

這些情況下,你可以手工配置Django 的設置。實現(xiàn)這點可以通過調(diào)用:

django.conf.settings.configure(default_settings, **settings)

例如:

from django.conf import settings

settings.configure(DEBUG=True)

可以傳遞configure() 給任意多的關鍵字參數(shù),每個關鍵字參數(shù)表示一個設置及其值。每個參數(shù)的名稱應該都是大寫,與上面講到的設置名稱相同。如果某個設置沒有傳遞給configure() 而且在后面需要使用到它,Django 將使用其默認設置的值。

當你在一個更大的應用中使用到Django 框架的一部分,有必要以這種方式配置Django —— 而且實際上推薦這么做。

所以,當通過settings.configure() 配置時,Django 不會對進程的環(huán)境變量做任何修改(參見TIME_ZONE 文檔以了解為什么會發(fā)生)。在這些情況下,它假設你已經(jīng)完全控制你的環(huán)境變量。

自定義默認的設置

如果你想讓默認值來自其它地方而不是django.conf.global_settings,你可以傳遞一個提供默認設置的模塊或類作為default_settings 參數(shù)(或第一個位置參數(shù))給configure() 調(diào)用。

在下面的示例中,默認的設置來自myapp_defaults, 并且設置DEBUGTrue,而不論它在myapp_defaults 中的值是什么:

from django.conf import settings
from myapp import myapp_defaults

settings.configure(default_settings=myapp_defaults, DEBUG=True)

下面的示例和上面一樣,只是使用myapp_defaults 作為一個位置參數(shù):

settings.configure(myapp_defaults, DEBUG=True)

正常情況下,你不需要用這種方式覆蓋默認值。Django 的默認值以及足夠好使,你可以安全地使用它們。注意,如果你傳遞一個新的默認模塊,你將完全取代 Django 的默認值,所以你必須指定每個可能用到的設置的值。完整的設置清單,參見django.conf.settings.global_settings。

configure() 和DJANGO_SETTINGS_MODULE 兩者必居其一

如果你沒有設置DJANGO_SETTINGS_MODULE 環(huán)境變量,你 必須 在使用到讀取設置的任何代碼之前調(diào)用configure()

如果你沒有設置DJANGO_SETTINGS_MODULE 且沒有調(diào)用 configure(),在首次訪問設置時Django 將引發(fā)一個ImportError 異常。

如果你設置了DJANGO_SETTINGS_MODULE,并訪問了一下設置,然后 調(diào)用configure(),Django 將引發(fā)一個RuntimeError 表示該設置已經(jīng)有配置。有個屬性正好可以用于這個情況:

例如:

from django.conf import settings
if not settings.configured:
    settings.configure(myapp_defaults, DEBUG=True)

另外,多次調(diào)用configure()或者在設置已經(jīng)訪問過之后調(diào)用 configure() 都是錯誤的。

歸結為一點:只使用configure()DJANGO_SETTINGS_MODULE 中的一個。不可以兩個都用和都不用。

另見

設置參考 包含完整的核心設置和contrib 應用設置的列表。

譯者:Django 文檔協(xié)作翻譯小組,原文:Overview

本文以 CC BY-NC-SA 3.0 協(xié)議發(fā)布,轉(zhuǎn)載請保留作者署名和文章出處。

Django 文檔協(xié)作翻譯小組人手緊缺,有興趣的朋友可以加入我們,完全公益性質(zhì)。交流群:467338606。

上一篇:Django中的測試下一篇:設置