Namespaces are one honking great idea - let's do more of those!python
— [The Zen of Python][cite]git
REST framework 的配置是在名爲 REST_FRAMEWORK
的單個 Django 設置中的全部命名空間。github
例如,你的項目的 settings.py
文件可能包含以下所示的內容:django
REST_FRAMEWORK = {
'DEFAULT_RENDERER_CLASSES': (
'rest_framework.renderers.JSONRenderer',
),
'DEFAULT_PARSER_CLASSES': (
'rest_framework.parsers.JSONParser',
)
}
複製代碼
若是你須要訪問項目中 REST framework 的 API 設置值,則應使用 api_settings
對象。例如。json
from rest_framework.settings import api_settings
print api_settings.DEFAULT_AUTHENTICATION_CLASSES
複製代碼
api_settings
對象將檢查用戶定義的設置,不然將回退到默認值。任何使用字符串導入路徑引用類的設置都會自動導入並返回被引用的類,而不是字符串文字。後端
如下設置控制基本 API 策略,並應用於每一個基於 APIView
類的視圖或基於 @api_view
函數的視圖。api
渲染器類的列表或元組,用於肯定返回 Response
對象時可能使用的默認渲染器集。bash
默認值:markdown
(
'rest_framework.renderers.JSONRenderer',
'rest_framework.renderers.BrowsableAPIRenderer',
)
複製代碼
解析器類的列表或元組,用於肯定訪問 request.data
屬性時使用的默認解析器集。
默認值:
(
'rest_framework.parsers.JSONParser',
'rest_framework.parsers.FormParser',
'rest_framework.parsers.MultiPartParser'
)
複製代碼
身份驗證類的列表或元組,用於肯定在訪問 request.user
或 request.auth
屬性時使用的默認身份驗證集。
默認值:
(
'rest_framework.authentication.SessionAuthentication',
'rest_framework.authentication.BasicAuthentication'
)
複製代碼
權限類的列表或元組,用於肯定在視圖開始時檢查的默認權限集。權限必須由列表中的每一個類授予。
默認值:
(
'rest_framework.permissions.AllowAny',
)
複製代碼
限流類的列表或元組,用於肯定在視圖開始時檢查的默認限流類集。
默認值: ()
內容協商類,用於肯定如何爲響應選擇渲染器,並給定傳入請求。
默認值:'rest_framework.negotiation.DefaultContentNegotiation'
將用於 schema 生成的視圖檢查類。
默認值:'rest_framework.schemas.AutoSchema'
如下設置控制通用基於類的視圖的行爲。
用於通用過濾的過濾器後端類列表。若是設置爲 None
,則禁用通用過濾。
用於分頁的默認頁面大小。若是設置爲 None
,則默認狀況下禁用分頁。
默認值:None
查詢參數的名稱,可用於指定 SearchFilter
使用的搜索詞。
默認值:search
排序參數的名稱,可用於指定 OrderingFilter
返回結果的排序。
默認值:ordering
當沒有版本信息存在時,默認的 request.version
值。
默認值:None
若是設置,則此值將限制版本控制方案可能返回的版本集合,若是提供的版本不在此集合中,則會引起錯誤。
默認值:None
用於版本控制參數的字符串,例如媒體類型或 URL 查詢參數。
默認值:'version'
如下設置控制未經身份驗證的請求的行爲。
用於初始化未經身份驗證的請求的 request.user
的類。(若是要徹底刪除驗證,能夠經過從 INSTALLED_APPS
中除去 django.contrib.auth
,將 UNAUTHENTICATED_USER
設置爲 None
。)
默認值: django.contrib.auth.models.AnonymousUser
用於初始化未經身份驗證的請求的 request.auth
的類。
默認值:None
如下設置控制 APIRequestFactory 和 APIClient 的行爲
進行測試請求時應使用的默認格式。
這應該與 TEST_REQUEST_RENDERER_CLASSES
設置中的其中一個渲染器類的格式相匹配。
默認值: 'multipart'
構建測試請求時支持的渲染器類。
構建測試請求時可使用任何這些渲染器類的格式,例如:client.post('/users', {'username': 'jamie'}, format='json')
默認值:
(
'rest_framework.renderers.MultiPartRenderer',
'rest_framework.renderers.JSONRenderer'
)
複製代碼
若是設置,則在生成 schema 路徑參數時,會將 URL conf 中的 'pk'
標識符映射到實際字段名稱上。一般這將是 'id'
。因爲 「primary key」 是實現細節,所以這提供了更適合的表示,而 「identifier」 是更通常的概念。
默認值:True
若是設置,則用於將內部視圖方法名稱映射到 schema 生成中使用的外部操做名稱。這使咱們可以生成比代碼庫中內部使用的名稱更適合外部表示的名稱。
默認值: {'retrieve': 'read', 'destroy': 'delete'}
經過在請求 URL 中使用 format=…
查詢參數,可用於覆蓋默認內容協商 Accept
header 行爲的 URL 參數的名稱。
例如: http://example.com/organizations/?format=csv
若是此設置的值爲 None
,則 URL 格式覆蓋將被禁用。
默認值: 'format'
URL conf 中用於提供格式後綴的參數名稱。使用 format_suffix_patterns
包含後綴 URL patterns 時應用此設置。
例如:http://example.com/organizations.csv/
默認值:'format'
如下設置用於控制如何分析和渲染日期和時間表示。
格式字符串,默認狀況下用於渲染 DateTimeField
序列化字段的輸出。若是爲 None
,那麼 DateTimeField
序列化字段將返回 Python datetime
對象,而且日期時間編碼將由渲染器決定。
能夠是 None
,'iso-8601'
或 Python strftime 格式字符串中的任何一個。
默認值:'iso-8601'
默認使用的格式字符串列表,用於解析 DateTimeField
序列化字段的輸入。
能夠是包含字符串 'iso-8601'
或 Python strftime 格式字符串的列表。
默認值: ['iso-8601']
格式字符串,默認狀況下用於渲染 DateField
序列化字段的輸出。若是爲 None
,那麼 DateField
序列化字段將返回 Python date
對象,而且日期編碼將由渲染器決定。
能夠是 None
,'iso-8601'
或 Python strftime 格式字符串中的任何一個。
默認值:'iso-8601'
默認使用的格式字符串列表,用於解析 DateField
序列化字段的輸入。
能夠是包含字符串 'iso-8601'
或 Python strftime 格式字符串的列表。
默認值:['iso-8601']
格式字符串,默認狀況下用於渲染 imeField
序列化字段的輸出。若是爲 None
,那麼 TimeField
序列化字段將返回 Python time
對象,而且時間編碼將由渲染器決定。
能夠是 None
,'iso-8601'
或 Python strftime 格式字符串中的任何一個。
默認值: 'iso-8601'
默認使用的格式字符串列表,用於解析 TimeField
序列化字段的輸入。
能夠是包含字符串 'iso-8601'
或 Python strftime 格式字符串的列表。
默認值:['iso-8601']
設置爲 True
時,JSON 響應將容許 unicode 字符做爲響應。例如:
{"unicode black star":"★"}
複製代碼
當設置爲 False
時,JSON 響應將轉義非ascii字符,以下所示:
{"unicode black star":"\u2605"}
複製代碼
兩種樣式都符合 RFC 4627,而且在語法上都是有效 JSON。在檢查 API 響應時,unicode 樣式更受用戶歡迎。
默認值: True
當設置爲 True
時,JSON 響應將返回緊湊表示,':'
和 ','
字符以後沒有間隔。例如:
{"is_admin":false,"email":"jane@example"}
複製代碼
當設置爲 False
時,JSON 響應將返回稍微更冗長的表示,以下所示:
{"is_admin": false, "email": "jane@example"}
複製代碼
默認樣式是返回縮小的響應,符合 Heroku 的 API 設計準則。
默認值: True
當設置爲 True
時,JSON 渲染和解析只會遵循語法上有效的 JSON,而 Python 的 json
模塊接受的擴展浮點值(nan
,inf
,-inf
)會引起異常。這是推薦的設置,由於一般不支持這些值。例如,Javascript 的 JSON.Parse
和 PostgreSQL 的 JSON 數據類型都不接受這些值。
當設置爲 False
時,JSON 的渲染和解析將是寬鬆的。可是,這些值仍然無效,須要在代碼中專門處理。
默認值:True
在不支持原生十進制類型的 API 表示形式中返回小數對象時,一般最好將該值做爲字符串返回。這樣能夠避免二進制浮點實現所帶來的精度損失。
設置爲 True
時,序列化 DecimalField
類將返回字符串而不是 Decimal
對象。設置爲 False
時,序列化將返回 Decimal
對象,默認 JSON 編碼器將做爲浮點數返回。
默認值: True
如下設置用於生成視圖名稱和描述,如 OPTIONS
請求的響應中所使用的,以及可瀏覽 API 中使用的設置。
表示生成視圖名稱時應使用的函數的字符串。
這應該是一個具備如下簽名的函數:
view_name(cls, suffix=None)
複製代碼
cls
: 視圖類。一般,名稱函數會在生成描述性名稱時經過訪問 cls .__ name__
來檢查類的名稱。suffix
: 區分視圖中各個視圖時使用的可選後綴。默認值:'rest_framework.views.get_view_name'
表示生成視圖描述時應使用的函數的字符串。
此設置能夠更改成支持除默認 markdown 之外的標記樣式。例如,你可使用它支持在可瀏覽的 API 中輸出的視圖文檔字符串中的 rst
標記。
這應該是一個具備如下簽名的函數:
view_description(cls, html=False)
複製代碼
cls
: 視圖類。一般,description 函數會在生成描述時檢查類的文檔字符串,方法是訪問 cls .__ doc__
html
: 指示是否須要 HTML 輸出的布爾值。在可瀏覽的 API 中使用時爲 true
,在生成 OPTIONS
響應時使用 False
。默認值: 'rest_framework.views.get_view_description'
用於在可瀏覽 API 中渲染關係字段的 select 字段截取的全局設置。
html_cutoff
值的全局設置。必須是整數。
默認值: 1000
表明 html_cutoff_text
全局設置的字符串。
默認值: "More than {count} items..."
一個字符串,表示在返回任何給定異常的響應時應使用的函數。若是該函數返回 None
,則會引起 500 錯誤。
此設置能夠更改成支持默認 {"detail": "Failure..."}
響應之外的錯誤響應。例如,你可使用它來提供 API 響應,如 {"errors": [{"message": "Failure...", "code": ""} ...]}
.
這應該是一個具備如下簽名的函數:
exception_handler(exc, context)
複製代碼
exc
: 異常。默認值: 'rest_framework.views.exception_handler'
表示應該用於序列化錯誤的關鍵字的字符串,該字符串不引用特定字段,而表明通常錯誤。
默認值:'non_field_errors'
一個字符串,表示用於由 HyperlinkedModelSerializer
生成的 URL 字段的鍵
默認值: 'url'
一個 0 或更大的整數,可用於指定 API 在後臺運行的應用程序代理的數量。這容許限流器更準確地識別客戶端 IP 地址。若是設置爲 None
,那麼限流器將使用寬鬆的 IP 匹配方式。
默認值:None