设置-Django REST框架
settings.py
设置
名称空间是一个伟大的主意-让我们做更多的!
— Python的禅宗
REST框架的配置都位于一个Django设置中,命名为REST_FRAMEWORK
.
例如,您的项目settings.py
文件可能包括如下内容:
REST_FRAMEWORK = {'DEFAULT_RENDERER_CLASSES': ['rest_framework.renderers.JSONRenderer',],'DEFAULT_PARSER_CLASSES': ['rest_framework.parsers.JSONParser',]
}
访问设置
如果需要访问项目中REST框架的API设置的值,则应使用api_settings
对象。例如。
from rest_framework.settings import api_settingsprint(api_settings.DEFAULT_AUTHENTICATION_CLASSES)
这个api_settings
对象将检查任何用户定义的设置,否则返回到默认值.任何使用字符串导入路径引用类的设置都将自动导入和返回引用的类,而不是字符串文本。
API参考
API策略设置
以下设置控制基本API策略,并应用于APIView
基于类的视图,或@api_view
基于功能的视图
默认呈现器类
呈现器类的列表或元组,它确定在返回Response
对象。
违约:
['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'
默认模式类
将用于架构生成的视图检查器类。
违约:'rest_framework.schemas.AutoSchema'
一般视图设置
以下设置控制基于泛型类的视图的行为。
默认过滤器后端
应该用于泛型筛选的筛选后端类的列表。如果设置为None
然后禁用泛型筛选。
默认分页类
用于queryset分页的默认类。如果设置为None
默认情况下禁用分页。有关的进一步指导,请参阅分页文档设置和改性分页风格。
违约:None
页大小
用于分页的默认页大小。如果设置为None
默认情况下禁用分页。
违约:None
搜索PARAM
查询参数的名称,可用于指定SearchFilter
.
违约:search
有序PARAM
查询参数的名称,可用于指定OrderingFilter
.
违约:ordering
版本控制设置
默认版本
应该使用的值。request.version
当没有版本控制信息时。
违约:None
允许版本
如果设置,此值将限制版本控制方案可能返回的版本集,如果所提供的版本不在此集合中,则会引发错误。
违约:None
版本PARAM
用于任何版本控制参数的字符串,例如在媒体类型或URL查询参数中。
违约:'version'
身份验证设置
以下设置控制未经身份验证的请求的行为。
未经认证的用户
应该用来初始化的类。request.user
对于未经验证的请求。(如果完全删除身份验证,例如通过删除django.contrib.auth
从…INSTALLED_APPS
,集未经认证的用户
到None
.)
违约:django.contrib.auth.models.AnonymousUser
未经认证的令牌
应该用来初始化的类。request.auth
对于未经验证的请求。
违约:None
测试设置
以下设置控制APIRequestFactory和APIClient的行为
测试请求默认格式
在发出测试请求时应使用的默认格式。
这应该与呈现器类的格式匹配。测试请求呈现器类
背景。
违约:'multipart'
测试请求呈现器类
生成测试请求时支持的呈现程序类。
在构造测试请求时,可以使用任何这些呈现器类的格式,例如:client.post('/users', {'username': 'jamie'}, format='json')
违约:
['rest_framework.renderers.MultiPartRenderer','rest_framework.renderers.JSONRenderer'
]
模式生成控件
模式胁迫路径PK
如果设置,这将映射'pk'
生成架构路径参数时,URL conf中的标识符将显示在实际字段名上。通常这将是'id'
...这给出了更合适的表示形式,因为“主键”是实现细节,而“标识符”是一个更一般的概念。
违约:True
模式胁迫方法名称
如果设置,则用于将内部viewset方法名称映射到架构生成中使用的外部操作名称。这允许我们生成比代码库内部使用的名称更适合外部表示的名称。
违约:{'retrieve': 'read', 'destroy': 'delete'}
内容类型控件
URL格式覆盖
可用于覆盖默认内容协商的URL参数的名称。Accept
头行为,方法是使用format=…
请求URL中的查询参数。
例如:http://example.com/organizations/?format=csv
如果此设置的值为None
然后将禁用URL格式重写。
违约:'format'
格式后缀_KWARG
URL conf中可用于提供格式后缀的参数的名称。当使用format_suffix_patterns
若要包含后缀URL模式,请执行以下操作。
例如:http://example.com/organizations.csv/
违约:'format'
日期和时间格式
以下设置用于控制如何解析和呈现日期和时间表示。
日期时间格式
默认情况下应用于呈现DateTimeField
序列化字段。如果None
,然后DateTimeField
序列化器字段将返回Python。datetime
对象,则日期时间编码将由呈现程序确定。
可能是None
, 'iso-8601'
或者一只Pythonstftime格式绳子。
违约:'iso-8601'
日期时间输入格式
默认情况下应用于将输入解析为DateTimeField
序列化字段。
可能是包含字符串的列表。'iso-8601'
或者Pythonstftime格式弦乐。
违约:['iso-8601']
日期格式
默认情况下应用于呈现DateField
序列化字段。如果None
,然后DateField
序列化器字段将返回Python。date
对象,则日期编码将由呈现程序确定。
可能是None
, 'iso-8601'
或者一只Pythonstftime格式绳子。
违约:'iso-8601'
日期输入格式
默认情况下应用于将输入解析为DateField
序列化字段。
可能是包含字符串的列表。'iso-8601'
或者Pythonstftime格式弦乐。
违约:['iso-8601']
时间格式
默认情况下应用于呈现TimeField
序列化字段。如果None
,然后TimeField
序列化器字段将返回Python。time
对象,则时间编码将由呈现器确定。
可能是None
, 'iso-8601'
或者一只Pythonstftime格式绳子。
违约:'iso-8601'
时间输入格式
默认情况下应用于将输入解析为TimeField
序列化字段。
可能是包含字符串的列表。'iso-8601'
或者Pythonstftime格式弦乐。
违约:['iso-8601']
编码
Unicode_JSON
当设置为True
,JSON响应将允许响应中的Unicode字符。例如:
{"unicode black star":"★"}
当设置为False
,JSON响应将转义非ascii字符,如下所示:
{"unicode black star":"\u2605"}
这两种样式都符合RFC 4627,并且在语法上是有效的JSON。在检查API响应时,首选Unicode样式,因为它对用户更友好。
违约:True
紧致JSON
当设置为True
,JSON响应将返回紧凑的表示形式,之后没有间隔。':'
和','
人物。例如:
{"is_admin":false,"email":"jane@example"}
当设置为False
,JSON响应将返回更详细的表示形式,如下所示:
{"is_admin": false, "email": "jane@example"}
默认样式是返回缩小的响应,与Heroku的API设计指南.
违约:True
严格JSON
当设置为True
,JSON呈现和解析只会观察到语法上有效的JSON,从而引发扩展浮点值的异常(nan
, inf
, -inf
)被Python的json
模块。这是建议的设置,因为通常不支持这些值。例如,Javascript的JSON.Parse
PostgreSQL的JSON数据类型也不接受这些值。
当设置为False
,JSON呈现和解析将是允许的。但是,这些值仍然无效,需要在代码中进行特殊处理。
违约:True
强制十进制字符串
当返回API表示中不支持本机十进制类型的十进制对象时,通常最好将值作为字符串返回。这避免了二进制浮点实现带来的精度损失。
当设置为True
,序列化器DecimalField
类将返回字符串而不是Decimal
物品。当设置为False
,序列化程序将返回Decimal
对象,默认的JSON编码器将作为浮动返回这些对象。
违约:True
视图名称和描述
的响应中使用以下设置生成视图名称和描述OPTIONS
请求,并在可浏览API中使用。
视图名称函数
一个字符串,表示在生成视图名称时应该使用的函数。
这应该是一个具有以下签名的函数:
view_name(self)
-
self
视图实例。通常,name函数将在生成描述性名称时,通过访问self.__class__.__name__
.
如果视图实例继承ViewSet
,它可能是用几个可选参数初始化的:
-
name
为视图集中的视图显式提供的名称。通常,该值在提供时应按原样使用。 -
suffix
文本,用于区分视图集中的个别视图。这个论点是相互排斥的name
. -
detail
布尔值,它将视图集中的单个视图区分为“列表”或“详细”视图。
违约:'rest_framework.views.get_view_name'
视图描述函数
表示生成视图描述时应该使用的函数的字符串。
此设置可更改为支持默认标记以外的标记样式。例如,您可以使用它来支持rst
在可浏览API中输出视图中的文档字符串中的标记。
这应该是一个具有以下签名的函数:
view_description(self, html=False)
-
self
视图实例。通常,在生成描述时,Description函数将检查类的docstring,方法是访问self.__class__.__doc__
-
html
*指示是否需要HTML输出的布尔值。True
在可浏览API中使用时,以及False
用于生成OPTIONS
答复。
如果视图实例继承ViewSet
,它可能是用几个可选参数初始化的:
-
description
在视图集中显式地提供给视图的描述。通常,这是由额外的视图集设置的。action
S,并应按原样使用。
违约:'rest_framework.views.get_view_description'
HTML选择字段裁剪
全局设置选择字段裁剪以呈现关系字段在可浏览API中。
HTML_SELECT截止
对象的全局设置。html_cutoff
价值。一定是整数。
缺省值:1000
HTML_SELECT_截取文本
表示全局设置的字符串。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'
URL字段名
的URL字段应该使用的键的字符串。HyperlinkedModelSerializer
.
违约:'url'
名词代理
整数0或更多,可用于指定API运行的应用程序代理的数量。这允许节流更准确地识别客户端IP地址。如果设置为None
然后油门类将使用不太严格的IP匹配。
违约:None