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