当前位置: 代码迷 >> 综合 >> Settings - Django REST framework
  详细解决方案

Settings - Django REST framework

热度:118   发布时间:2023-09-14 10:52:45.0

设置-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.userrequest.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.ParsePostgreSQL的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在视图集中显式地提供给视图的描述。通常,这是由额外的视图集设置的。actionS,并应按原样使用。

违约:'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

  相关解决方案