設定
名前空間は素晴らしいアイデアです - もっと活用しましょう!
REST frameworkの設定は、REST_FRAMEWORK
という単一のDjango設定の中にすべて名前空間化されています。
例えば、プロジェクトのsettings.py
ファイルには次のようなものが含まれる場合があります。
REST_FRAMEWORK = {
'DEFAULT_RENDERER_CLASSES': [
'rest_framework.renderers.JSONRenderer',
],
'DEFAULT_PARSER_CLASSES': [
'rest_framework.parsers.JSONParser',
]
}
設定へのアクセス
プロジェクトでREST frameworkのAPI設定の値にアクセスする必要がある場合は、api_settings
オブジェクトを使用する必要があります。例えば。
from rest_framework.settings import api_settings
print(api_settings.DEFAULT_AUTHENTICATION_CLASSES)
api_settings
オブジェクトは、ユーザー定義の設定を確認し、そうでない場合はデフォルト値に戻ります。クラスを参照する文字列インポートパスを使用する設定は、文字列リテラルではなく、参照されたクラスを自動的にインポートして返します。
APIリファレンス
APIポリシー設定
次の設定は基本的なAPIポリシーを制御し、すべてのAPIView
クラスベースビューまたは@api_view
関数ベースビューに適用されます。
DEFAULT_RENDERER_CLASSES
Response
オブジェクトを返す際に使用できるレンダラーのデフォルトセットを決定する、レンダラークラスのリストまたはタプル。
デフォルト
[
'rest_framework.renderers.JSONRenderer',
'rest_framework.renderers.BrowsableAPIRenderer',
]
DEFAULT_PARSER_CLASSES
request.data
プロパティにアクセスする際に使用されるパーサーのデフォルトセットを決定する、パーサークラスのリストまたはタプル。
デフォルト
[
'rest_framework.parsers.JSONParser',
'rest_framework.parsers.FormParser',
'rest_framework.parsers.MultiPartParser'
]
DEFAULT_AUTHENTICATION_CLASSES
request.user
またはrequest.auth
プロパティにアクセスする際に使用されるオーセンティケーターのデフォルトセットを決定する、認証クラスのリストまたはタプル。
デフォルト
[
'rest_framework.authentication.SessionAuthentication',
'rest_framework.authentication.BasicAuthentication'
]
DEFAULT_PERMISSION_CLASSES
ビューの開始時にチェックされるパーミッションのデフォルトセットを決定する、パーミッションクラスのリストまたはタプル。リスト内のすべてのクラスによってパーミッションが許可されている必要があります。
デフォルト
[
'rest_framework.permissions.AllowAny',
]
DEFAULT_THROTTLE_CLASSES
ビューの開始時にチェックされるスロットルのデフォルトセットを決定する、スロットルクラスのリストまたはタプル。
デフォルト: []
DEFAULT_CONTENT_NEGOTIATION_CLASS
着信リクエストに応じてレスポンスのレンダラーを選択する方法を決定する、コンテンツネゴシエーションクラス。
デフォルト: 'rest_framework.negotiation.DefaultContentNegotiation'
DEFAULT_SCHEMA_CLASS
スキーマ生成に使用されるビューインスペクタークラス。
デフォルト: 'rest_framework.schemas.openapi.AutoSchema'
汎用ビュー設定
次の設定は、汎用クラスベースビューの動作を制御します。
DEFAULT_FILTER_BACKENDS
汎用フィルタリングに使用されるフィルタバックエンドクラスのリスト。None
に設定されている場合、汎用フィルタリングは無効になります。
DEFAULT_PAGINATION_CLASS
クエリセットのページネーションに使用するデフォルトクラス。None
に設定されている場合、デフォルトでページネーションは無効になります。設定と変更に関するページネーションのドキュメントを参照してください。
デフォルト: None
PAGE_SIZE
ページネーションに使用するデフォルトのページサイズ。None
に設定されている場合、デフォルトでページネーションは無効になります。
デフォルト: None
SEARCH_PARAM
SearchFilter
で使用される検索語を指定するために使用できるクエリパラメータの名前。
デフォルト: search
ORDERING_PARAM
OrderingFilter
によって返される結果の順序を指定するために使用できるクエリパラメータの名前。
デフォルト: ordering
バージョン管理設定
DEFAULT_VERSION
バージョン情報が存在しない場合にrequest.version
に使用される値。
デフォルト: None
ALLOWED_VERSIONS
設定されている場合、この値はバージョン管理スキームによって返されるバージョンのセットを制限し、提供されたバージョンがこのセットにない場合はエラーが発生します。
デフォルト: None
VERSION_PARAM
メディアタイプまたはURLクエリパラメータなど、任意のバージョン管理パラメータに使用される文字列。
デフォルト: 'version'
DEFAULT_VERSIONING_CLASS
使用するデフォルトのバージョン管理スキーム。
デフォルト: None
認証設定
次の設定は、認証されていないリクエストの動作を制御します。
UNAUTHENTICATED_USER
認証されていないリクエストに対してrequest.user
を初期化するために使用されるクラス。(認証を完全に削除する場合、例えばINSTALLED_APPS
からdjango.contrib.auth
を削除する場合は、UNAUTHENTICATED_USER
をNone
に設定します。)
デフォルト: django.contrib.auth.models.AnonymousUser
UNAUTHENTICATED_TOKEN
認証されていないリクエストに対してrequest.auth
を初期化するために使用されるクラス。
デフォルト: None
テスト設定
次の設定は、APIRequestFactoryとAPIClientの動作を制御します。
TEST_REQUEST_DEFAULT_FORMAT
テストリクエストを行う際に使用するデフォルトのフォーマット。
これは、TEST_REQUEST_RENDERER_CLASSES
設定のレンダラークラスのいずれかのフォーマットと一致する必要があります。
デフォルト: 'multipart'
TEST_REQUEST_RENDERER_CLASSES
テストリクエストを作成する際にサポートされるレンダラークラス。
これらのレンダラークラスのいずれかのフォーマットは、テストリクエストを作成する際に使用できます。例えば: client.post('/users', {'username': 'jamie'}, format='json')
デフォルト
[
'rest_framework.renderers.MultiPartRenderer',
'rest_framework.renderers.JSONRenderer'
]
スキーマ生成制御
SCHEMA_COERCE_PATH_PK
設定されている場合、これはスキーマパスパラメータを生成する際に、URLコンフィグの'pk'
識別子を実際のフィールド名にマッピングします。通常これは'id'
になります。「主キー」は実装の詳細であるのに対し、「識別子」はより一般的な概念であるため、より適切な表現になります。
デフォルト: True
SCHEMA_COERCE_METHOD_NAMES
設定されている場合、これは内部のviewsetメソッド名を、スキーマ生成で使用される外部アクション名にマッピングするために使用されます。これにより、コードベース内部で使用されているものよりも外部表現に適した名前を生成できます。
デフォルト: {'retrieve': 'read', 'destroy': 'delete'}
コンテンツタイプ制御
URL_FORMAT_OVERRIDE
リクエストURLでformat=…
クエリパラメータを使用することにより、デフォルトのコンテンツネゴシエーションAccept
ヘッダーの動作をオーバーライドするために使用できるURLパラメータの名前。
例えば: http://example.com/organizations/?format=csv
この設定の値がNone
の場合、URLフォーマットのオーバーライドは無効になります。
デフォルト: 'format'
FORMAT_SUFFIX_KWARG
サフィックス付きURLパターンを含めるためにformat_suffix_patterns
を使用する場合に、フォーマットサフィックスを提供するためにURLコンフィグで使用できるパラメータの名前。
例えば: http://example.com/organizations.csv/
デフォルト: 'format'
日付と時刻のフォーマット
次の設定は、日付と時刻の表現をどのように解析およびレンダリングするかを制御するために使用されます。
DATETIME_FORMAT
DateTimeField
シリアライザーフィールドの出力をレンダリングするためにデフォルトで使用されるフォーマット文字列。None
の場合、DateTimeField
シリアライザーフィールドはPythonのdatetime
オブジェクトを返し、datetimeエンコーディングはレンダラーによって決定されます。
None
、'iso-8601'
、またはPythonのstrftimeフォーマット文字列のいずれかになります。
デフォルト: 'iso-8601'
DATETIME_INPUT_FORMATS
DateTimeField
シリアライザーフィールドへの入力を解析するためにデフォルトで使用されるフォーマット文字列のリスト。
文字列'iso-8601'
またはPythonのstrftimeフォーマット文字列を含むリストになります。
デフォルト: ['iso-8601']
DATE_FORMAT
DateField
シリアライザーフィールドの出力をレンダリングするためにデフォルトで使用されるフォーマット文字列。None
の場合、DateField
シリアライザーフィールドはPythonのdate
オブジェクトを返し、日付エンコーディングはレンダラーによって決定されます。
None
、'iso-8601'
、またはPythonのstrftimeフォーマット文字列のいずれかになります。
デフォルト: 'iso-8601'
DATE_INPUT_FORMATS
DateField
シリアライザーフィールドへの入力を解析するためにデフォルトで使用されるフォーマット文字列のリスト。
文字列'iso-8601'
またはPythonのstrftimeフォーマット文字列を含むリストになります。
デフォルト: ['iso-8601']
TIME_FORMAT
TimeField
シリアライザーフィールドの出力をレンダリングするためにデフォルトで使用されるフォーマット文字列。None
の場合、TimeField
シリアライザーフィールドはPythonのtime
オブジェクトを返し、時間エンコーディングはレンダラーによって決定されます。
None
、'iso-8601'
、またはPythonのstrftimeフォーマット文字列のいずれかになります。
デフォルト: 'iso-8601'
TIME_INPUT_FORMATS
TimeField
シリアライザーフィールドへの入力を解析するためにデフォルトで使用されるフォーマット文字列のリスト。
文字列'iso-8601'
またはPythonのstrftimeフォーマット文字列を含むリストになります。
デフォルト: ['iso-8601']
エンコーディング
UNICODE_JSON
True
に設定されている場合、JSONレスポンスはレスポンスにUnicode文字を許可します。例えば
{"unicode black star":"★"}
False
に設定されている場合、JSONレスポンスは非ASCII文字をエスケープします。例えば
{"unicode black star":"\u2605"}
どちらのスタイルもRFC 4627に準拠しており、構文的に有効なJSONです。Unicodeスタイルは、APIレスポンスを検査する際に、よりユーザーフレンドリーであるため推奨されます。
デフォルト: True
COMPACT_JSON
True
に設定されている場合、JSONレスポンスはコンパクトな表現を返し、':'
と','
文字の後にスペースがありません。例えば
{"is_admin":false,"email":"jane@example"}
False
に設定されている場合、JSONレスポンスは少し冗長な表現を返します。例えば
{"is_admin": false, "email": "jane@example"}
デフォルトのスタイルは、HerokuのAPI設計ガイドラインに従って、ミニファイドなレスポンスを返すことです。
デフォルト: True
STRICT_JSON
True
に設定されている場合、JSONのレンダリングと解析は構文的に有効なJSONのみを観察し、Pythonのjson
モジュールで受け入れられる拡張浮動小数点値(nan
、inf
、-inf
)に対して例外を発生させます。これらの値は一般的にサポートされていないため、これが推奨設定です。例えば、JavascriptのJSON.Parse
やPostgreSQLのJSONデータ型はこれらの値を受け入れません。
False
に設定されている場合、JSONのレンダリングとパースは寛容になります。ただし、これらの値は依然として無効であり、コードで特別な処理が必要になります。
デフォルト: True
COERCE_DECIMAL_TO_STRING
ネイティブのdecimal型をサポートしていないAPI表現でdecimalオブジェクトを返す場合、通常は文字列として値を返すのが最善です。これにより、バイナリ浮動小数点実装で発生する精度の損失を回避できます。
True
に設定されている場合、シリアライザのDecimalField
クラスはDecimal
オブジェクトではなく文字列を返します。False
に設定されている場合、シリアライザはDecimal
オブジェクトを返し、デフォルトのJSONエンコーダはそれを浮動小数点数として返します。
デフォルト: True
ビュー名と説明
以下の設定は、OPTIONS
リクエストへのレスポンスで使用されるビュー名と説明、およびブラウザブルAPIで使用されるビュー名と説明を生成するために使用されます。
VIEW_NAME_FUNCTION
ビュー名の生成に使用される関数を表す文字列。
この関数は、以下のシグネチャを持つ必要があります。
view_name(self)
self
: ビューインスタンス。通常、名前関数は、self.__class__.__name__
にアクセスすることで、クラス名を参照して記述的な名前を生成します。
ビューインスタンスがViewSet
を継承している場合、いくつかのオプションの引数で初期化されている可能性があります。
name
: ビューセット内のビューに明示的に指定された名前。通常、この値は提供されたまま使用されます。suffix
: ビューセット内の個々のビューを区別するために使用されるテキスト。この引数はname
と相互に排他的です。detail
: ビューセット内の個々のビューを「リスト」ビューと「詳細」ビューのいずれかとして区別するブール値。
デフォルト: 'rest_framework.views.get_view_name'
VIEW_DESCRIPTION_FUNCTION
ビューの説明の生成に使用される関数を表す文字列。
この設定を変更して、デフォルトのマークダウン以外のマークアップスタイルをサポートできます。たとえば、ブラウザブルAPIで出力されるビューのdocstringでrst
マークアップをサポートするために使用できます。
この関数は、以下のシグネチャを持つ必要があります。
view_description(self, html=False)
self
: ビューインスタンス。通常、説明関数は、self.__class__.__doc__
にアクセスすることで、クラスのdocstringを参照して説明を生成します。html
: HTML出力が要求されるかどうかを示すブール値。ブラウザブルAPIで使用される場合はTrue
、OPTIONS
レスポンスの生成で使用される場合はFalse
。
ビューインスタンスがViewSet
を継承している場合、いくつかのオプションの引数で初期化されている可能性があります。
description
: ビューセット内のビューに明示的に指定された説明。通常、これは追加のビューセットaction
によって設定され、そのまま使用されます。
デフォルト: 'rest_framework.views.get_view_description'
HTMLセレクトフィールドの切り捨て
ブラウザブルAPIでリレーショナルフィールドをレンダリングするためのセレクトフィールドのカットオフに関するグローバル設定。
HTML_SELECT_CUTOFF
html_cutoff
値のグローバル設定。整数である必要があります。
デフォルト: 1000
HTML_SELECT_CUTOFF_TEXT
html_cutoff_text
のグローバル設定を表す文字列。
デフォルト: "More than {count} items..."
その他の設定
EXCEPTION_HANDLER
特定の例外に対するレスポンスを返す際に使用される関数を表す文字列。関数がNone
を返す場合、500エラーが発生します。
この設定を変更して、デフォルトの{"detail": "Failure..."}
レスポンス以外のエラーレスポンスをサポートできます。たとえば、{"errors": [{"message": "Failure...", "code": ""} ...]}
のようなAPIレスポンスを提供するために使用できます。
この関数は、以下のシグネチャを持つ必要があります。
exception_handler(exc, context)
exc
: 例外。
デフォルト: 'rest_framework.views.exception_handler'
NON_FIELD_ERRORS_KEY
特定のフィールドではなく、一般的なエラーであるシリアライザエラーに使用されるキーを表す文字列。
デフォルト: 'non_field_errors'
URL_FIELD_NAME
HyperlinkedModelSerializer
によって生成されるURLフィールドに使用されるキーを表す文字列。
デフォルト: 'url'
NUM_PROXIES
APIが動作しているアプリケーションプロキシの数を指定するために使用できる0以上の整数。これにより、クライアントのIPアドレスをより正確に識別するためのスロットリングが可能になります。None
に設定されている場合、スロットルクラスではより緩やかなIPマッチングが使用されます。
デフォルト: None