堆芯

sanic.cookies

class sanic.cookies.Cookie(key, value, *, path='/', domain=None, secure=True, max_age=None, expires=None, httponly=False, samesite='Lax', partitioned=False, comment=None, host_prefix=False, secure_prefix=False)

基类:dict

HTTP Cookie的表示形式,提供用于操作响应的Cookie属性的接口。

这个类是Cookie的简化表示,类似于Python标准库中的SimpleCookie。它允许操作各种Cookie属性,包括路径、域、安全设置等。

提供了几个“智能默认设置”,以使创建默认安全的Cookie变得更容易。这些措施包括:

  • 设置 secure 标志为 True 默认情况下

  • 设置 samesite 标志为 Lax 默认情况下

参数:

Key(Str):cookie的key(名称)。Value(Str):cookie的值。路径(str,可选):cookie的路径。默认为“/”。属性域(可选 [str] ,可选):Cookie的域。

默认为 None

Secure(bool,可选):Cookie是否安全。

默认为 True

最大年龄(可选 [int] ,可选):Cookie的最长期限

在几秒钟内。默认为 None

过期(可选 [datetime] ,可选):

饼干。默认为 None

Httponly(bool,可选):cookie的HttpOnly标志。

默认为 False

相同站点(可选 [SameSite] ,可选):的SameSite属性

饼干。默认为 "Lax"

已分区(bool,可选):Cookie是否已分区。

默认为 False

备注(可选 [str] ,可选):Cookie的注释。

默认为 None

Host_prefix(bool,可选):是否使用主机前缀。

默认为 False

Secure_Prefix(bool,可选):是否使用安全前缀。

默认为 False

encode(encoding)

按照开发人员指示的特定编码类型对Cookie内容进行编码。

利用 str.encode 由Python提供的方法。

此方法可用于编码和嵌入 utf-8 内容到cookies中。

警告

Cookie对象的直接编码已弃用,将在v24.3中删除。

参数:

Coding(Str):要使用的编码类型。

返回:

字节:编码的Cookie内容。

参数:

encoding (str) --

返回类型:

bytes

classmethod make_key(key, host_prefix=False, secure_prefix=False)

使用适当的前缀创建Cookie密钥。

Cookie可以有一个或两个前缀。第一个是 __Host- which requires that the cookie be set with path="/", domain=None, and secure=True. The second is _ _Secure-,它要求 secure=True

它们不能组合在一起。

参数:

Key(Str):cookie的key(名称)。Host_prefix(bool,可选):是否将__host-作为前缀添加到键。

这需要Path=“/”、DOMAIN=NONE和SECURE=True。默认为 False

SECURE_PREFIX(bool,可选):是否将__SECURE-作为前缀添加到密钥。

这要求Secure=True。默认为 False

产生:

ServerError:如果同时设置HOST_PREFIX和SECURE_PREFIX。

返回:

Str:带有适当前缀的键。

参数:
  • key (str) --

  • host_prefix (bool) --

  • secure_prefix (bool) --

返回类型:

str

property comment

对曲奇的评论。默认为 None

property domain

Cookie的域。默认为 None

property expires

Cookie的过期日期。默认为 None

property httponly

Cookie是否仅为HTTP。默认为 False

property max_age

Cookie的最长期限(以秒为单位)。默认为 None

property partitioned

Cookie是否已分区。默认为 False

property path

曲奇的路径。默认为 "/"

property samesite

Cookie的SameSite属性。默认为 "Lax"

property secure

Cookie是否安全。默认为 True

class sanic.cookies.CookieJar(headers)

基类:dict

一个用来操纵曲奇的容器。

当添加和删除cookie时,cookiejar会动态地写入头,通过使用multiHeader类提供一个唯一的键来编码设置cookie,从而绕过了每个名称一个头的限制。

参数:

Headers(Header):要写入Cookie的Header对象。

在CookieJar中添加一个Cookie。

参数:

Key(Str):cookie的key。Value(Str):cookie的值。路径(str,可选):cookie的路径。默认为“/”。属性域(可选 [str] ,可选):Cookie的域。默认为无。Secure(bool,可选):是否设置为安全Cookie。默认为True。最大年龄(可选 [int] ,可选):Cookie的最长期限(以秒为单位);如果设置为0 a

浏览器应将其删除。默认为无。

过期(可选 [datetime] ,可选):Cookie过期时间;如果设置为无浏览器

应将其设置为会话Cookie。默认为无。

Httponly(bool,可选):是否设置为仅HTTP。默认为False。相同站点(可选 [SameSite] ,可选):如何设置samesite属性,应该是

严格、宽松或无(不区分大小写)。默认为“lax”。

已分区(bool,可选):是否设置为已分区。默认为False。备注(可选 [str] ,可选):Cookie评论。默认为无。Host_prefix(bool,可选):是否将__host-作为前缀添加到键。

这需要Path=“/”、DOMAIN=NONE和SECURE=True。默认为False。

SECURE_PREFIX(bool,可选):是否将__SECURE-作为前缀添加到密钥。

这要求Secure=True。默认为False。

返回:

Cookie:创建的Cookie的实例。

产生:

ServerError:如果在未设置Secure=True的情况下设置host_prefix。ServerError:如果在没有路径=“/”和域=NONE的情况下设置HOST_PREFIX。ServerError:如果host_prefix设置为DOMAIN。ServerError:如果在未设置Secure=True的情况下设置SECURE_PREFIX。ServerError:如果在没有HOST_PREFIX=True的情况下设置PARTIZED。

例如:

基本用法 ``python cookie = add_cookie('name', 'value') ` `

添加具有自定义路径和域的Cookie ``python cookie = add_cookie('name', 'value', path='/custom', domain='example.com') ` `

添加带有注释的安全、仅限HTTP的Cookie ``python cookie = add_cookie('name', 'value', secure=True, httponly=True, comment='My Cookie') ` `

添加最长期限为60秒的Cookie ``python cookie = add_cookie('name', 'value', max_age=60) ` `

参数:
  • key (str) --

  • value (str) --

  • path (str) --

  • domain (Optional[str, None]) --

  • secure (bool) --

  • max_age (Optional[int, None]) --

  • expires (Optional[datetime.datetime, None]) --

  • httponly (bool) --

  • samesite (Optional[Union[Literal[Strict], Literal[Lax], Literal[None], Literal[strict], Literal[lax], Literal[none]]]) --

  • partitioned (bool) --

  • comment (Optional[str, None]) --

  • host_prefix (bool) --

  • secure_prefix (bool) --

返回类型:

sanic.cookies.response.Cookie

删除Cookie

这将有效地将其设置为Max-Age:0,浏览器应将其解释为:“删除Cookie”。

由于它是浏览器/客户端实现,因此您的结果可能会因所使用的客户端而异。

参数:
  • key (str) -- 要删除的密钥

  • path (Optional[str], optional) -- Cookie的路径,默认为无

  • domain (Optional[str], optional) -- Cookie的域,默认为无

  • host_prefix (bool) -- 是否将__主机-作为前缀添加到键。这要求Path=“/”、DOMAIN=NONE和SECURE=True缺省值为False

  • secure_prefix (bool) -- 是否添加__SECURE-作为密钥的前缀。这要求Secure=True,缺省值为False

返回类型:

None

get(*args, **kwargs)

V24.3中已弃用

从曲奇罐子里拿一块饼干来。

参数:

Key(Str):要获取的cookie的密钥。路径(str,可选):cookie的路径。默认为 "/" 。属性域(可选 [str] ,可选):Cookie的域。

默认为 None

Host_prefix(bool,可选):是否将__host-作为前缀添加到键。

这需要Path=“/”、DOMAIN=NONE和SECURE=True。默认为 False

SECURE_PREFIX(bool,可选):是否将__SECURE-作为前缀添加到密钥。

这要求Secure=True。默认为 False

返回:

任选 [Cookie] :如果Cookie存在,则为 None

参数:
  • key (str) --

  • path (str) --

  • domain (Optional[str, None]) --

  • host_prefix (bool) --

  • secure_prefix (bool) --

返回类型:

Optional[sanic.cookies.response.Cookie, None]

检查CookieJar中是否存在Cookie。

参数:

Key(Str):要检查的cookie的密钥。路径(str,可选):cookie的路径。默认为 "/" 。属性域(可选 [str] ,可选):Cookie的域。

默认为 None

Host_prefix(bool,可选):是否将__host-作为前缀添加到键。

这需要Path=“/”、DOMAIN=NONE和SECURE=True。默认为 False

SECURE_PREFIX(bool,可选):是否将__SECURE-作为前缀添加到密钥。

这要求Secure=True。默认为 False

返回:

Bool:Cookie是否存在。

参数:
  • key (str) --

  • path (str) --

  • domain (Optional[str, None]) --

  • host_prefix (bool) --

  • secure_prefix (bool) --

返回类型:

bool

items()

V24.3中已弃用

keys()

V24.3中已弃用

pop(key, *args, **kwargs)

V24.3中已弃用

values()

V24.3中已弃用

property cookie_headers

V24.3中已弃用

property cookies

CookieJar中的Cookie列表。

返回:

明细表 [Cookie] :CookieJar中的Cookie列表。

property header_key

V24.3中已弃用

sanic.handlers

class sanic.handlers.ContentRangeHandler(request, stats)

基类:sanic.models.protocol_types.Range

解析和处理传入的请求头,以提取内容范围信息。

参数:

请求(Request):传入的请求对象。Stats(os.stat_Result):提供的文件的统计信息。

class sanic.handlers.DirectoryHandler(uri, directory, directory_view=False, index=None)

基类:object

提供目录中的文件。

参数:

URI(Str):提供文件的URI。目录(路径):提供文件的目录。DIRECTORY_VIEW(Bool):是否显示目录列表。索引(可选 [Union[str, Sequence[str] ]]):索引文件(S)至

如果请求目录,则提供服务。默认为无。

async handle(request, path)

处理请求。

参数:

请求(Request):传入的请求对象。Path(Str):要提供服务的文件的路径。

产生:

NotFound:如果找不到文件。IsADirectoryError:如果路径是目录并且DIRECTORY_VIEW为FALSE。

返回:

Response:响应对象。

参数:
  • request (sanic.request.types.Request) --

  • path (str) --

class sanic.handlers.ErrorHandler(base=<class 'sanic.errorpages.TextRenderer'>)

基类:object

处理和处理所有未捕获的异常。

这个错误处理框架内置在核心中,开发人员可以对其进行扩展,以执行各种任务,从记录错误状态到将其报告给可用于实时警报系统的外部服务。

参数:

Base(BaseReneller):用于错误页面的呈现器。

add(exception, handler, route_names=None)

向已存在的处理程序对象添加新的异常处理程序。

参数:
异常(sanic.expections.SanicException或异常):类型

需要处理的异常情况。

Handler(Function):对将

处理异常。

返回:

没有

参数:

route_names (Optional[List[str], None]) --

default(request, exception)

为ErrorHandler的对象提供默认行为。

如果开发人员选择扩展ErrorHandler,他们可以为该方法提供一个定制实现,使其以他们认为合适的方式运行。

参数:

REQUEST(sanic.quest.Request):传入请求。Except(sanic.Exceptions.SanicException或Exception):异常对象。

返回:

HTTPResponse:响应对象。

例如:

``` Python类CustomErrorHandler(ErrorHandler):

Def Default(自身,请求:请求,异常:异常)->HTTPResponse:

#处理异常和创建响应的自定义逻辑CUSTOM_RESPONSE=MY_CUSTOM_LOGIC(REQUEST,EXCEPTION)返回CUSTOM_RESPONSE

App=Sanic(“MyApp”,Error_Handler=CustomErrorHandler()) ```

参数:
  • request (sanic.request.types.Request) --

  • exception (Exception) --

返回类型:

sanic.response.types.HTTPResponse

static log(request, exception)

记录有关传入请求和关联异常的信息。

参数:

REQUEST(请求):要记录的传入请求。异常:在处理请求过程中发生的异常。

返回:

没有

参数:
  • request (sanic.request.types.Request) --

  • exception (Exception) --

返回类型:

None

lookup(exception, route_name=None)

查找现有的 ErrorHandler 并获取特定类型的异常的已注册处理程序。

此方法利用dict查找加快检索过程。

参数:
异常(sanic.expections.SanicException或异常):类型

当然是例外。

返回:

如果找到已注册的函数, None 否则的话。

参数:

route_name (Optional[str, None]) --

response(request, exception)

获取并执行异常处理程序并返回响应对象。

参数:

请求(sanic.quest.Request):请求的实例。异常(sanic.expections.SanicException或异常):要处理的异常。

返回:

包装从 default 函数或该类型异常的已注册处理程序。

sanic.headers

class sanic.headers.AcceptList(iterable=(), /)

基类:list

Accept标头中使用的媒体类型列表。

Accept标头条目按首选顺序列出,从最首选的开始。这个类是一个列表 MediaType 对象,这些对象还封装Q值或任何其他参数。

提供了两种不同的方法来搜索列表:-‘Match’用于查找最喜欢的匹配(支持通配符)-运算符‘In’用于检查显式匹配(通配符为文字)

参数:

*args(MediaType):任意数量的mediaType对象。

match(*mimes, accept_wildcards=True)

查找客户端接受的媒体类型。

此方法可用于找出客户端请求的媒体类型中的哪一个相对于作为参数提供的媒体类型最受欢迎。

优先级的设置如下:1.S的RFC7231设置的优先级5.3.2,优先级较高

对于Q值和更具体的类型定义,

  1. 参数的顺序(首选第一个),以及

  2. Accept标头上的第一个匹配条目。

通配符是双向匹配的。通常会找到匹配项,因为Accept标头通常包括 */* 特别是如果标题丢失、未手动设置或客户端是浏览器。

注意:返回的对象表现为匹配的MIME参数的字符串,如果没有找到匹配,则为空/假。匹配的标头条目 MediaTypeNone 可作为 m 属性。

参数:

Mimes(列表 [str] ):要按首选顺序搜索的任何MIME类型。ACCEPT_WANDICS(Bool):将接受条目与其中的通配符进行匹配。

返回:

Match:包含MIME字符串和MediaType对象的Match对象。

参数:

mimes (str) --

返回类型:

sanic.headers.Matched

class sanic.headers.Matched(mime, header)

基类:object

MIME字符串与标头的匹配结果。

此类表示MIME字符串与标头的匹配结果。它封装MIME字符串、标头,并提供与其他MIME字符串进行匹配的方法。

参数:

MIME(Str):要匹配的MIME字符串。Header(MediaType):要匹配的标头(如果有的话)。

match(other)

将此MIME字符串与另一个MIME字符串进行匹配。

检查此MIME字符串是否与给定的MIME字符串匹配。在类型和子类型上都支持通配符。

参数:

Other(Str):要匹配的MIME字符串。

返回:

已匹配:退货 self MIME字符串是否兼容。无:退货 None 如果MIME字符串不兼容。

参数:

other (Union[str, sanic.headers.Matched]) --

返回类型:

Optional[sanic.headers.Matched, None]

class sanic.headers.MediaType(type_, subtype, **params)

基类:object

Accept标头中使用的媒体类型。

此类是Accept标头中使用的媒体类型的表示形式。它封装了类型、子类型和任何参数,并提供了与其他媒体类型匹配的方法。

提供了两种不同的方法来搜索列表:-‘Match’用于查找最喜欢的匹配(支持通配符)-运算符‘In’用于检查显式匹配(通配符为文字)

参数:

type_ (Str):媒体类型的类型。Subtype(Str):媒体类型的子类型。**Params(Str):该媒体类型的任意参数。

match(mime_with_params)

将此媒体类型与另一媒体类型进行匹配。

检查此媒体类型是否与给定的MIME类型/子类型匹配。在类型和子类型上都支持通配符。如果MIME包含分号,后跟参数,则两种媒体类型的参数必须完全匹配。

备注

使用 == 运算符,而不展开通配符来检查文字匹配。

参数:

Media_type(Str):要匹配的类型/子类型字符串。

返回:

MediaType:返回 self 如果媒体类型兼容。无:退货 None 如果媒体类型不兼容。

参数:

mime_with_params (Union[str, sanic.headers.MediaType]) --

返回类型:

Optional[sanic.headers.MediaType, None]

property has_wildcard

如果此媒体类型中包含通配符,则返回True。

返回:

Bool:如果此媒体类型中包含通配符,则为True。

sanic.headers.format_http1_response(status, headers)

设置HTTP/1.1响应头的格式。

参数:

Status(Int):HTTP状态代码。Headers(HeaderBytesIterable):标题元组的可迭代。

返回:

字节:格式化的响应头。

参数:
  • status (int) --

  • headers (Iterable[Tuple[bytes, bytes]]) --

返回类型:

bytes

sanic.headers.fwd_normalize(fwd)

规格化并转换从转发的标头中提取的值。

参数:

Fwd(OptionsIterable):键-值对的可迭代。

返回:

选项:规格化的键-值对的字典。

参数:

fwd (Iterable[Tuple[str, str]]) --

返回类型:

Dict[str, Union[int, str]]

sanic.headers.fwd_normalize_address(addr)

标准化代理标头的地址字段。

参数:

Addr(Str):地址字符串。

返回:

Str:标准化的地址字符串。

参数:

addr (str) --

返回类型:

str

sanic.headers.parse_accept(accept)

根据S的RFC 7231,解析Accept报头并对可接受的媒体类型进行排序。5.3.2

Https://datatracker.ietf.org/doc/html/rfc7231#section-5.3.2

参数:

Accept(Str):要解析的Accept标头值。

返回:

AcceptList:媒体类型对象的列表,按首选项排序。

产生:

InvalidHeader:如果标头值无效。

参数:

accept (Optional[str, None]) --

返回类型:

sanic.headers.AcceptList

sanic.headers.parse_content_header(value)

解析Content-Type和Content-Disposal标头值。

E.g. form-data; name=upload; filename="file.txt" to ('form-data', {'name': 'upload', 'filename': 'file.txt'})

与cgi.parse_Header和werkzeug.parse_Options_Header基本相同,但运行速度更快,更好地处理特殊字符。

将%22取消转义为 " 和%0D%0A至`

字段值中的`。

参数:

Value(Str):要解析的头值。

返回:

元组 [str, Options] :标题值和选项字典。

参数:

value (str) --

返回类型:

Tuple[str, Dict[str, Union[int, str]]]

sanic.headers.parse_credentials(header, prefixes=None)

解析任何标头,目的是从中检索任何凭据。

参数:

页眉(可选 [str] ):要解析的标头。前缀(可选 [Union[List, Tuple, Set] ],可选):要查找的前缀。默认为无。

返回:

元组 [Optional[str] ,可选 [str] ]:前缀和凭据。

参数:
  • header (Optional[str, None]) --

  • prefixes (Optional[Union[List, Tuple, Set]]) --

返回类型:

Tuple[Optional[str, None], Optional[str, None]]

sanic.headers.parse_forwarded(headers, config)

解析RFC 7239转发报头。的价值 bysecret 必须匹配 config.FORWARDED_SECRET :Return:带有键和值的Dict,如果不匹配,则为None

返回类型:

Optional[Dict[str, Union[int, str]], None]

sanic.headers.parse_host(host)

拆分主机:端口分为主机名和端口。

参数:

Host(Str):主机字符串。

返回:

元组 [Optional[str] ,可选 [int] ]:主机名和端口的元组。

参数:

host (str) --

返回类型:

Tuple[Optional[str, None], Optional[int, None]]

sanic.headers.parse_xforwarded(headers, config)

解析传统的代理头。

返回类型:

Optional[Dict[str, Union[int, str]], None]

sanic.request

class sanic.request.File(type, body, name)

基类:NamedTuple

用于定义文件的模型。

这是一个 namedtuple ,因此您可以遍历对象,或按名称访问参数。

参数:

Type(str,可选):MIMETYPE,默认为“文本/普通”。Body(字节):文件的字节数。Name(Str):文件名。

body: bytes

字段编号1的别名

name: str

字段编号2的别名

type: str

字段编号0的别名

class sanic.request.Request(url_bytes, headers, version, method, transport, app, head=b'', stream_id=0)

基类:Generic[sanic.request.types.sanic_type, sanic.request.types.ctx_type]

HTTP请求的状态。

参数:

URL_Bytes(字节):原始URL字节。Headers(Header):请求头部。Version(Str):http版本。方法(Str):http方法。Transport(传输协议):传输协议。应用程序(Sanic):Sanic实例。Head(字节,可选):请求头。默认为 b"" 。Stream_id(int,可选):http/3流ID,默认为 0

classmethod generate_id(*_)

为请求生成唯一ID。

调用此方法为每个请求生成唯一的ID。默认情况下,它返回一个 uuid.UUID 举个例子。

返回:

友联市 [uuid.UUID, str, int] :请求的唯一ID。

返回类型:

Union[uuid.UUID, str, int]

get_args(keep_blank_values=False, strict_parsing=False, encoding='utf-8', errors='replace')

解析 query_string 使用 urllib.parse.parse_qs

此方法由 args 属性,但如果需要更改默认参数,也可以直接使用它。

参数:
KEEP_BLACK_VALUES(Bool):指示空值是否在

百分比编码的查询应视为空字符串。一个 True 值指示应将空白作为空白字符串保留。默认设置 False 值指示将忽略空白值,并将其视为不包含空白值。

STRICT_PARSING(Bool):指示如何进行解析的标志

错误。如果 False (默认设置),错误将以静默方式忽略。如果 True ,错误会引发 ValueError 例外。

Coding(Str):指定如何解码百分比编码的序列

转换为Unicode字符,这是 bytes.decode() 方法。

Errors(Str):指定如何解码百分比编码的序列

转换为Unicode字符,这是 bytes.decode() 方法。

返回:

RequestParameters:包含已解析参数的字典。

参数:
  • keep_blank_values (bool) --

  • strict_parsing (bool) --

  • encoding (str) --

  • errors (str) --

返回类型:

sanic.request.parameters.RequestParameters

classmethod get_current()

检索当前请求对象

这实现了 [Context Variables] (https://docs.python.org/3/library/contextvars.html)以允许从任何位置访问当前请求。

典型的用例是当您想要从非处理程序的函数(如日志记录函数)访问当前请求时:

``` Python导入日志记录

类LoggingFormater(logging.ForMatter):
定义格式(自身、记录):

请求=Request.get_Current()record.url=quest.url record.ip=quest.ip Return Super().Format(Record)

```

返回:

请求:当前请求对象

产生:
Sanic.Exceptions.ServerError:如果它在请求之外

生命周期。

返回类型:

sanic.request.types.Request

get_form(keep_blank_values=False)

方法从请求中提取和分析表单数据。

参数:

KEEP_BLACK_VALUES(Bool):是否从表单数据中丢弃空白值。

返回:

任选 [RequestParameters] :解析后的表单数据。

参数:

keep_blank_values (bool) --

返回类型:

Optional[sanic.request.parameters.RequestParameters, None]

get_query_args(keep_blank_values=False, strict_parsing=False, encoding='utf-8', errors='replace')

解析 query_string 使用 urllib.parse.parse_qsl

此方法由以下人员使用 query_args 属性,但如果您需要更改默认参数,则可以直接使用。

参数:
KEEP_BLACK_VALUES(Bool):指示空值是否在

百分比编码的查询应视为空字符串。一个 True 值指示应将空白作为空白字符串保留。默认设置 False 值指示将忽略空白值,并将其视为不包含空白值。

STRICT_PARSING(Bool):指示如何处理的标志

分析错误。如果 False (默认设置),错误将以静默方式忽略。如果 True ,错误会引发 ValueError 例外。

Coding(Str):指定如何解码百分比编码的序列

转换为Unicode字符,这是 bytes.decode() 方法。

Errors(Str):指定如何解码百分比编码的序列

转换为Unicode字符,这是 bytes.decode() 方法。

返回:

List:包含已解析参数的元组列表。

参数:
  • keep_blank_values (bool) --

  • strict_parsing (bool) --

  • encoding (str) --

  • errors (str) --

返回类型:

list

load_json(loads=None)

将请求正文加载为JSON

参数:

Loads(可调用,可选):一个定制的JSON加载器。默认为无。

产生:

BadRequest:如果请求正文不能被解析为JSON

返回:

Any:被解析为JSON的请求体

返回类型:

Any

static make_context()

创建新的上下文对象。

当推送新的请求上下文时,将调用此方法。如果您想要控制所创建的上下文对象的类型,那么它是在子类中覆盖的一个很好的候选者。

默认情况下,它返回一个 types.SimpleNamespace 举个例子。

返回:

CTX_TYPE:一个新的上下文对象。

返回类型:

ctx_type

async receive_body()

接收请求.正文,如果尚未收到。

流处理程序可以调用它来接收完整的正文。SANIC在运行任何非流路由处理程序之前调用此函数。

对于流式和非流式路由的自定义处理,自定义请求类可以覆盖此属性。

reset_response()

重置响应对象。

这将清除对象的大部分状态。它通常不应该直接调用,而是作为请求生命周期的一部分自动调用。

产生:
Sanic.Exceptions.ServerError:如果响应已经

已发送。

返回类型:

None

async respond(response=None, *, status=200, headers=None, content_type=None)

响应请求而不返回。

此方法只能调用一次,因为您只能响应一次。如果没有 response 参数传递时,将从 statusheaderscontent_type 争论。

The first typical usecase 如果您希望在不从处理程序返回的情况下响应请求:

``` Python@app.get(“/”)async def处理程序(请求:请求):

数据=...#处理一些事情

JSON_RESPONSE=json({“data”:data})等待请求者响应(Json_Response)

@app.on_Response异步码 add_header(_, 返回:HTTPResponse):

#Middleware仍按预期响应执行。Headers ["one"] =“两个”

```

The second possible usecase 是指当您想要直接响应请求时:

``` PYTHON RESPONSE=AWAIT REQUEST.RESPEND(CONTENT_TYPE=“Text/CSV”)AWAIT RESPONSE。SEND(“foo,”)AWAIT RESPONSE。SEND(“bar”)

#您可以通过调用#the‘eof()’方法来控制响应的完成:aWait Response.eof() ```

参数:

ResponseType:要发送的响应实例。Status(Int):要在响应中返回的状态代码。页眉(可选 [Dict[str, str] ]):要在响应中返回的Header,默认为无。Content_type(可选 [str] ):响应的Content-Type标头,默认为无。

返回:
FinalResponseType:正在发送的最终响应(可能与

“Response”参数,因为有中间件),可以用来手动发送数据。

参数:
  • response (Optional[sanic.response.types.BaseHTTPResponse, None]) --

  • status (int) --

  • headers (Optional[Union[sanic.compat.Header, Dict[str, str]]]) --

  • content_type (Optional[str, None]) --

url_for(view_name, **kwargs)

检索给定视图名称的URL。

相同于 sanic.Sanic.url_for, but automatically determine scheme and netloc base on the request. Since this method is aiming to generate correct schema & netloc, `_ 外部`是隐含的。

参数:

View_name(Str):要为其生成URL的视图名称。**kwargs:构建URL查询字符串的任意关键字参数。

返回:

Str:生成的URL。

参数:

view_name (str) --

返回类型:

str

property accept

接受的响应内容类型。

一个方便的处理程序,用于更轻松地匹配符合RFC的MIME类型,解析为可以匹配通配符的列表,并包括 / 默认情况下。

返回:

AcceptList:接受的响应内容类型

property args

要访问的便利性属性 Request.get_args 使用缺省值。

property client_ip

客户端IP地址。1.代理远程地址 self.forwarded['for'] 2.本地对等地址 self.ip

Sanic 23.6中的新功能。比起这个,我更喜欢这个 remote_addr 用于确定客户端地址,而不管服务是否在代理之后运行(代理部署需要单独配置)。

返回:

字符串:IPV4、方括号IPv6、UNIX套接字名称或任意字符串

property content_type

请求的内容类型标头

返回:

Str:请求的Content-Type标头

property cookies

请求上的传入Cookie

返回:

请求参数:请求上的传入Cookie

property credentials

尝试返回身份验证标头值。

涵盖NoAuth、基本Auth、承载令牌、Api令牌身份验证模式。

返回:
任选 [Credentials] :具有令牌或用户名的凭据对象

和与该请求相关的密码

property ctx

当前请求上下文。

这是当前请求的上下文对象。它由以下人员创建 Request.make_context 是存储您希望在请求生命周期中可访问的数据的好地方。

返回:

CTX_TYPE:当前请求上下文。

property endpoint

的别名 sanic.request.Request.name

返回:

任选 [str] :路由名称

property files

解析为上载文件的请求正文

返回:

任选 [RequestParameters] :解析为上传文件的请求体

property form

解析为表单数据的请求正文

返回:

任选 [RequestParameters] :解析为表单数据的请求体

property forwarded

从请求头获取的活动代理信息,如Sanic配置中指定的。

字段名按、for、proto、host、port和path进行规范化。-for和by IPv6地址用括号括起来-端口(int)只由端口头设置,而不是从主机设置。-路径是未编码的url

新样式转发邮件头中可能会提供其他值。

返回:

选项:来自请求标头的代理信息

property host

当前有效的服务器‘host’(主机名或主机名:端口)。

  1. config.SERVER_NAME 覆盖任何客户端头

  2. 原始请求的代理主机

3.请求主机标头主机名和端口可以用 sanic.headers.parse_host(request.host)

返回:

Str:找到的第一个匹配主机,或空字符串

property id

客户端传入的请求ID,或后台生成的请求ID。

默认情况下,这将在以下位置定义的请求标头中查找: self.app.config.REQUEST_ID_HEADER 。默认为 X-Request-ID 。Sanic将尝试将ID转换为 UUID 或者是一个 int

如果没有来自客户端的UUID,则Sanic将尝试通过调用 Request.generate_id() 。默认行为是生成一个 UUID 。您可以通过子类化来自定义此行为 Request 并覆盖该方法。

``` 来自Sanic的Python导入请求,来自IterTools的Sanic导入计数

类IntRequest(Request.):

计数器=计数()

Def Generate_id(自身):

返回下一个(self.count)

App=Sanic(“MyApp”,REQUEST_CLASS=IntRequest) ```

返回:
任选 [Union[uuid.UUID, str, int] ]:从

客户端,或从后端生成。

property ip

套接字的对端IP

返回:

Str:套接字的对端IP

property is_cacheable

HTTP方法是否可缓存。

请参阅https://datatracker.ietf.org/doc/html/rfc7231#section-4.2.3

返回:

Bool:HTTP方法是否可缓存。

property is_idempotent

HTTP方法是否为幂等函数。

请参阅https://datatracker.ietf.org/doc/html/rfc7231#section-4.2.2

返回:

Bool:HTTP方法是否为幂等函数。

property is_safe

HTTP方法是否安全。

请参阅https://datatracker.ietf.org/doc/html/rfc7231#section-4.2.1

返回:

Bool:HTTP方法是否安全。

property json

请求正文被解析为JSON

返回:

Any:被解析为JSON的请求体

property match_info

路由解析后匹配的路径参数

返回:

迪克特 [str, Any] :解析路由后匹配的路径参数

property name

路由名称

在以下模式中:

` <AppName>.[<BlueprintName>.]<HandlerName> `

返回:

任选 [str] :路由名称

property network_paths

访问网络路径(如果可用)

返回:

任选 [List[Any] ]:访问网络路径(如果可用)

property path

本地HTTP请求的路径

返回:

Str:本地HTTP请求的路径

property port

套接字的对端端口

返回:

Int:套接字的对端端口

property protocol

该HTTP协议实例

返回:

协议:HTTP协议实例

property query_args

要访问的便利性属性 Request.get_query_args 使用缺省值。

property query_string

请求的查询的表示形式

返回:

Str:请求的查询的表示形式

property raw_headers

未解析的HTTP头

返回:

字节:未解析的HTTP头

property remote_addr

客户端IP地址(如果可以从代理获得)。

返回:

字符串:IPV4、方括号IPv6、UNIX套接字名称或任意字符串

property request_line

HTTP请求的第一行

返回:

字节:HTTP请求的第一行

property scheme

确定请求方案。

  1. config.SERVER_NAME 如果是完整URL格式

  2. 代理协议/方案

  3. 本地连接协议

返回:

字符串:http |https| Ws|wss或由标头给出的任意值。

property scope

请求的ASGI作用域。

返回:

ASGIScope:请求的ASGI作用域。

产生:

NotImplementedError:如果应用程序不是ASGI应用程序。

property server_name

客户端连接到的主机名,按 request.host

返回:

Str:客户端连接到的主机名,由 request.host

property server_path

当前URL的完整路径;使用代理路径或本地路径

返回:

Str:当前URL的完整路径;使用代理路径或本地路径

property server_port

客户端连接到的端口,通过转发 portrequest.host .

默认端口返回为80和443,基于 request.scheme .

返回:

Int:客户端连接到的端口,通过转发 portrequest.host

property socket

有关连接的套接字的信息(如果可用)

返回:
元组 [Optional[str] ,可选 [int] ]:有关

连接的套接字(如果可用),其形式为(IP、端口)的元组

property stream_id

访问HTTP/3流ID。

产生:

如果请求不是HTTP/3,则返回Sanic.Exceptions.ServerError。

返回:

Int:HTTP/3流ID。

property token

尝试返回auth头标记。

返回:

任选 [str] :auth标头内标识

property uri_template

定义的URI模板

返回:

任选 [str] :已定义的URI模板

property url

该URL

返回:

字符串:URL

class sanic.request.RequestParameters

基类:dict

托管一个以列表为值的dict,其中get返回列表的第一个值,get list返回整个shebang

get(name, default=None)

返回第一个值,默认值或实际值

参数:

名称(Str):参数的名称默认(可选 [Any] ,可选):默认值。默认为无。

返回:

任选 [Any] :列表的第一个值

参数:
  • name (str) --

  • default (Optional[Any, None]) --

返回类型:

Optional[Any, None]

getlist(name, default=None)

返回整个列表

参数:

名称(Str):参数的名称默认(可选 [Any] ,可选):默认值。默认为无。

返回:

任选 [Any] :整个列表

参数:
  • name (str) --

  • default (Optional[Any, None]) --

返回类型:

Optional[Any, None]

sanic.request.parse_multipart_form(body, boundary)

解析请求体并返回字段和文件

参数:

Body(字节):字节请求正文。边界(字节):字节多部分边界。

返回:

元组 [RequestParameters, RequestParameters] :包含以下内容的字段和文件的元组 RequestParameters

sanic.response

class sanic.response.BaseHTTPResponse

基类:object

所有HTTP响应的基类

将Cookie添加到CookieJar

看见 [Cookies] (/en/Guide/basics/cookies.html)

参数:

Key(Str):要添加的key(Str):要添加的值路径(str,可选):cookie的路径。默认为 "/" 。属性域(可选 [str] ,可选):Cookie的域。默认为 None 。Secure(bool,可选):Cookie是否安全。默认为 True 。最大年龄(可选 [int] ,可选):Cookie的最长时间。默认为 None 。过期(可选 [datetime] ,可选):Cookie的过期日期。默认为 None 。Httponly(bool,可选):cookie是否仅为http。默认为 False 。相同站点(可选 [SameSite] ,可选):Cookie的SameSite策略。默认为 "Lax" 。已分区(bool,可选):Cookie是否已分区。默认为 False 。备注(可选 [str] ,可选):Cookie的注释。默认为 None 。Host_prefix(bool,可选):是否将__host-作为前缀添加到键。这需要Path=“/”、DOMAIN=NONE和SECURE=True。默认为 False 。SECURE_PREFIX(bool,可选):是否将__SECURE-作为前缀添加到密钥。这要求Secure=True。默认为 False

返回:

Cookie:添加的Cookie

参数:
  • key (str) --

  • value (str) --

  • path (str) --

  • domain (Optional[str, None]) --

  • secure (bool) --

  • max_age (Optional[int, None]) --

  • expires (Optional[datetime.datetime, None]) --

  • httponly (bool) --

  • samesite (Optional[Union[Literal[Strict], Literal[Lax], Literal[None], Literal[strict], Literal[lax], Literal[none]]]) --

  • partitioned (bool) --

  • comment (Optional[str, None]) --

  • host_prefix (bool) --

  • secure_prefix (bool) --

返回类型:

sanic.cookies.response.Cookie

删除Cookie

这将有效地将其设置为Max-Age:0,浏览器应将其解释为:“删除Cookie”。

由于它是浏览器/客户端实现,因此您的结果可能会因所使用的客户端而异。

看见 [Cookies] (/en/Guide/basics/cookies.html)

参数:

Key(Str):需要删除的key路径(str,可选):cookie的路径。默认为 "/" 。属性域(可选 [str] ,可选):Cookie的域。默认为 None 。Host_prefix(bool,可选):是否将__host-作为前缀添加到键。这需要Path=“/”、DOMAIN=NONE和SECURE=True。默认为 False 。SECURE_PREFIX(bool,可选):是否将__SECURE-作为前缀添加到密钥。这要求Secure=True。默认为 False

参数:
  • key (str) --

  • path (str) --

  • domain (Optional[str, None]) --

  • host_prefix (bool) --

  • secure_prefix (bool) --

返回类型:

None

async send(data=None, end_stream=None)

将所有挂起的响应头和给定数据作为正文发送。

参数:

数据(可选 [AnyStr] ,可选):要写入的字符串或字节。默认为 None 。End_stream(可选 [bool] ,可选):是否关闭该块之后的流。默认为 None

参数:
  • data (Optional[AnyStr, None]) --

  • end_stream (Optional[bool, None]) --

返回类型:

None

property cookies

响应Cookie。

看见 [Cookies] (/en/Guide/basics/cookies.html)

返回:

CookieJar:响应Cookie

property processed_headers

获取要发送的以字节编码的标头元组列表。

根据STATUS和CONTENT_TYPE添加和删除标头。

返回:

迭代器 [Tuple[bytes, bytes] ]:要发送的以字节编码的标题元组列表

class sanic.response.HTTPResponse(body=None, status=200, headers=None, content_type=None)

基类:sanic.response.types.BaseHTTPResponse

要发送回客户端的HTTP响应。

参数:

正文(可选 [Any] ,可选):要返回的Body内容。默认为 None 。状态(int,可选):http响应号。默认为 200 。页眉(可选 [Union[Header, Dict[str, str] ]],可选):需要返回的头部。默认为 None 。Content_type(可选 [str] ,可选):要返回的内容类型(作为头部)。默认为 None

async eof()

向客户端发送EOF(文件结束)消息。

class sanic.response.JSONResponse(body=None, status=200, headers=None, content_type='application/json', dumps=None, **kwargs)

基类:sanic.response.types.HTTPResponse

JSON响应的便利类

当响应为json类型时,要发送回客户端的HTTP响应。提供了几个实用程序来操作常见的JSON数据类型。

参数:

正文(可选 [Any] ,可选):要返回的Body内容。默认为 None 。状态(int,可选):http响应号。默认为 200 。页眉(可选 [Union[Header, Dict[str, str] ]],可选):需要返回的头部。默认为 None 。Content_type(str,可选):要返回的内容类型(作为头部)。默认为 "application/json" 。转储(可选 [Callable[..., str] ],可选):用于json编码的函数。默认为 None**kwargs(any,可选):要传递给json编码函数的kwargs。默认为 {}

append(value)

向响应RAW_BODY追加一个值,以确保正文保持最新。

仅当RAW_BODY为列表时才能使用。

参数:

值(ANY):要追加的值

产生:

如果正文不是列表,则抛出

参数:

value (Any) --

返回类型:

None

extend(value)

使用给定值扩展响应的RAW_BODY,确保正文保持最新。

仅当RAW_BODY为列表时才能使用。

参数:

值(ANY):要扩展的值

产生:

如果正文不是列表,则抛出

参数:

value (Any) --

返回类型:

None

pop(key, default=<Default>)

从响应的RAW_Body中弹出一个密钥,以确保该Body保持最新。

只有当RAW_BODY是DICT或LIST时才能使用。

参数:

Key(Any):弹出缺省值的键(any,可选):找不到键时返回的缺省值。默认为 _default

产生:

如果正文不是词典或列表类型错误:如果正文是列表并且提供了默认值

返回:

Any:弹出的值

参数:
  • key (Any) --

  • default (Any) --

返回类型:

Any

set_body(body, dumps=None, **dumps_kwargs)

使用给定的转储函数将响应正文设置为给定值

使用给定的转储函数和kwargs设置新的响应正文,如果未指定,则回退到创建对象时给出的缺省值。

参数:

Body(Any):要设置转储的Body(可选 [Callable[..., str] ],可选):用于json编码的函数。默认为 None**Dumps_kwargs(any,可选):要传递给json编码函数的kwargs。默认为 {}

例如:

`python response = JSONResponse({"foo": "bar"}) response.set_body({"bar": "baz"}) assert response.body == b'{"bar": "baz"}' `

参数:
  • body (Any) --

  • dumps (Optional[Callable[[..], str], None]) --

  • dumps_kwargs (Any) --

返回类型:

None

update(*args, **kwargs)

使用给定值更新响应的RAW_BODY,确保正文保持最新。

只有当RAW_BODY是DICT时才能使用它。

参数:

*args: The args to update with * *kwargs:要更新的kwargs

产生:

如果正文不是字典,则抛出

返回类型:

None

property body

返回响应正文。

返回:

任选 [bytes] :响应正文

property raw_body

只要之前没有手动设置Body,就返回原始Body。

注意:此对象不应发生变化,因为它不会反映在响应正文中。如果需要更改响应正文,请考虑使用此类中提供的方法之一,或者使用更改后的对象调用set_Body(),或者将RAW_Body属性设置为该对象。

返回:

任选 [Any] :未加工的身体

class sanic.response.ResponseStream(streaming_fn, status=200, headers=None, content_type=None)

基类:object

在不推荐使用StreamingHTTPResponse之后,用于弥合差距的Comat层。

当:-FILE_STREAM被移到新样式流-FILE和FILE_STREAM合并到单个API中时,它将被删除

sanic.response.empty(status=204, headers=None)

向客户端返回空响应。

参数:

Status(int,可选):http响应码。默认为 204 。标题( [type] ,可选):自定义HTTP头。默认为 None

返回:

HTTPResponse:对客户端的空响应。

参数:
  • status (int) --

  • headers (Optional[Dict[str, str], None]) --

返回类型:

sanic.response.types.HTTPResponse

async sanic.response.file(location, status=200, request_headers=None, validate_when_requested=True, mime_type=None, headers=None, filename=None, last_modified=<Default>, max_age=None, no_store=None, _range=None)

返回包含文件数据的响应对象。

参数:

位置(联合 [str, PurePath] ):文件在系统上的位置。Status(int,可选):http响应码。如果只发送部分内容(206)或正在验证文件(304),则不强制使用传入状态。默认为200。请求标题(_H)(可选 [Header] ,可选):请求头。VALIDATE_WHEN_REQUESTED(bool,可选):if True 将在请求时验证文件。默认为True。MIME_TYPE(可选 [str] ,可选):特定MIME_TYPE。页眉(可选 [Dict[str, str] ],可选):自定义头部。文件名(可选 [str] ,可选):覆盖文件名。LAST_Modify(可选 [Union[datetime, float, int, Default] ],可选):文件的上次修改日期和时间。最大年龄(可选 [Union[float, int] ],可选):缓存控制的最长期限。No_store(可选 [bool] ,可选):任何缓存都不应存储此响应。默认为无。_范围(可选 [Range] ,可选):

返回:

HTTPResponse:包含文件数据的响应对象。

参数:
  • location (Union[str, pathlib.PurePath]) --

  • status (int) --

  • request_headers (Optional[sanic.compat.Header, None]) --

  • validate_when_requested (bool) --

  • mime_type (Optional[str, None]) --

  • headers (Optional[Dict[str, str], None]) --

  • filename (Optional[str, None]) --

  • last_modified (Optional[Union[datetime.datetime, float, int, sanic.helpers.Default]]) --

  • max_age (Optional[Union[int, float]]) --

  • no_store (Optional[bool, None]) --

  • _range (Optional[sanic.models.protocol_types.Range, None]) --

返回类型:

sanic.response.types.HTTPResponse

async sanic.response.file_stream(location, status=200, chunk_size=4096, mime_type=None, headers=None, filename=None, _range=None)

返回带有文件数据的流响应对象。

参数:
  • location (Union[str, pathlib.PurePath]) -- 文件在系统上的位置。

  • chunk_size (int) -- 流中每个块的大小(字节)

  • mime_type (Optional[str, None]) -- 特定的mime_类型。

  • headers (Optional[Dict[str, str], None]) -- 自定义标题。

  • filename (Optional[str, None]) -- 覆盖文件名。

  • _range (Optional[sanic.models.protocol_types.Range, None]) --

  • status (int) --

返回类型:

sanic.response.types.ResponseStream

参数:

位置(联合 [str, PurePath] ):文件在系统上的位置。Status(int,可选):http响应码。如果只发送部分内容(206)或正在验证文件(304),则不强制使用传入状态。默认为 200 。CHUNK_SIZE(int,可选):流中每个块的大小(字节)。默认为 4096 。MIME_TYPE(可选 [str] ,可选):特定MIME_TYPE。页眉(可选 [Dict[str, str] ],可选):自定义HTTP头。文件名(可选 [str] ,可选):覆盖文件名。_范围(可选 [Range] ,可选):要发送的字节范围。

sanic.response.html(body, status=200, headers=None)

返回具有HTML格式的正文的响应对象。

正文应该是一个 str or bytes like object, or an object with _ _html__`或 `_repr_html_

参数:

正文(联合 [str, bytes, HTMLProtocol] ):答复数据。Status(int,可选):http响应码。默认为 200 。页眉(词典 [str, str] ,可选):自定义HTTP头。默认为 None

返回:

HTTPResponse:响应对象,正文为html格式。

参数:
  • body (Union[str, bytes, sanic.models.protocol_types.HTMLProtocol]) --

  • status (int) --

  • headers (Optional[Dict[str, str], None]) --

返回类型:

sanic.response.types.HTTPResponse

sanic.response.json(body, status=200, headers=None, content_type='application/json', dumps=None, **kwargs)

返回主体为JSON格式的响应对象。

参数:

Body(Any):要序列化的响应数据。Status(int,可选):http响应码。默认为 200 。页眉(词典 [str, str] ,可选):自定义HTTP头。默认为 None 。Content_type(str,可选):响应的内容类型(字符串)。默认为 "application/json" 。转储(可调用 [..., str] ,可选):一个定制的json转储函数。默认为 None**kwargs(Any):传递给json编码器的剩余参数。

返回:

JSONResponse:响应对象,正文为json格式。

参数:
  • body (Any) --

  • status (int) --

  • headers (Optional[Dict[str, str], None]) --

  • content_type (str) --

  • dumps (Optional[Callable[[..], str], None]) --

  • kwargs (Any) --

返回类型:

sanic.response.types.JSONResponse

sanic.response.json_dumps()

以递归方式将任意对象转换为JSON。使用Enure_ascii=FALSE输出UTF-8。设置encode_html_chars=True将<>编码为Unicode转义序列。设置ESCAPE_FORWARD_SLASS=FALSE可防止转义/字符。设置ALLOW_NAN=FALSE可在序列化NaN或Infinity时引发异常。设置REJECT_BYTES=True可按字节引发TypeError。

sanic.response.raw(body, status=200, headers=None, content_type='application/octet-stream')

返回不编码正文的响应对象。

参数:

正文(可选 [AnyStr] ):答复数据。Status(int,可选):http响应码。默认为 200 。页眉(词典 [str, str] ,可选):自定义HTTP头。默认为 None 。Content_type(str,可选):响应的内容类型(字符串)。默认为 "application/octet-stream"

返回:

HTTPResponse:不编码正文的响应对象。

参数:
  • body (Optional[AnyStr, None]) --

  • status (int) --

  • headers (Optional[Dict[str, str], None]) --

  • content_type (str) --

返回类型:

sanic.response.types.HTTPResponse

sanic.response.redirect(to, headers=None, status=302, content_type='text/html; charset=utf-8')

通过设置Location标头导致HTTP重定向(默认情况下为302)。

参数:

To(Str):重定向到标头的路径或完全限定URL(可选 [Dict[str, str] ],可选):要包含在新请求中的标头的可选判定。默认为无。Status(int,可选):新请求的状态码(Int),默认为302。默认为302。Content_type(str,可选):响应的内容类型(字符串)。默认为“text/html;charset=utf-8”。

返回:

HTTPResponse:带有重定向的响应对象。

参数:
  • to (str) --

  • headers (Optional[Dict[str, str], None]) --

  • status (int) --

  • content_type (str) --

返回类型:

sanic.response.types.HTTPResponse

sanic.response.text(body, status=200, headers=None, content_type='text/plain; charset=utf-8')

返回正文为文本格式的响应对象。

参数:

Body(Str):响应数据。Status(int,可选):http响应码。默认为 200 。页眉(词典 [str, str] ,可选):自定义HTTP头。默认为 None 。Content_type(str,可选):响应的内容类型(字符串)。默认为 "text/plain; charset=utf-8"

返回:

HTTPResponse:响应对象,正文为文本格式。

产生:

TypeError:如果正文不是字符串。

参数:
  • body (str) --

  • status (int) --

  • headers (Optional[Dict[str, str], None]) --

  • content_type (str) --

返回类型:

sanic.response.types.HTTPResponse

async sanic.response.validate_file(request_headers, last_modified)

根据请求标头验证文件。

参数:

REQUEST_HEADERS(Header):请求头部。上次修改时间(UNION [datetime, float, int] ):文件的上次修改日期和时间。

返回:

任选 [HTTPResponse] :如果文件未修改,则为状态为304的响应对象。

参数:
  • request_headers (sanic.compat.Header) --

  • last_modified (Union[datetime.datetime, float, int]) --

返回类型:

Optional[sanic.response.types.HTTPResponse, None]

sanic.views

class sanic.views.HTTPMethodView

基类:object

用于创建和分组处理程序的基于类的实现

基于类的视图(CBV)是基于函数的视图的替代方案。它们允许您重用公共逻辑,并对相关视图进行分组,同时保持基于函数的视图的灵活性。

若要使用基于类的视图,请将方法处理程序子类化,并实现方法 (getpostputpatchdelete ),以使类与您希望支持的每个HTTP方法相对应。

例如:

``` Python类DummyView(HTTPMethodView):

Def Get(自身,请求:请求):

返回文本(‘我是GET方法’)

Def PUT(自身,请求:请求):

返回文本(‘我是PUT方法’)

```

如果有人试图使用未实现的方法,他们将收到405响应。

如果您需要任何url参数,只需将它们包含在方法签名中,就像您对基于函数的视图所做的那样。

``` Python类DummyView(HTTPMethodView):

Def get(自身,请求:请求,MY_PARAM_HERE:str):

返回文本(f“我使用{MY_PARAM_HERE}获取方法”)

```

接下来,您需要将视图附加到应用程序或蓝图。您可以使用与基于函数的视图完全相同的方式来执行此操作,只是您应该使用 MyView.as_view() 而不是 my_view_handler

`python app.add_route(DummyView.as_view(), "/<my_param_here>") `

或者,您可以使用 attach 方法:

`python DummyView.attach(app, "/<my_param_here>") `

或者,在子类化时:

``` Python类DummyView(HTTPMethodView,Attach=app,uri=“/<MY_PARAM_HERE>”):

..。

```

要添加装饰器,您可以执行以下任一操作:

  1. 将其添加到 decorators 类上的列表,它将应用于

    类上的所有方法;或

  2. 将其直接添加到方法中,这将仅将其应用于该方法。

``` Python类DummyView(HTTPMethodView):

装饰者= [my_decorator] ..。

#或

类DummyView(HTTPMethodView):

@my_decorator def get(self,请求:请求):

..。

```

需要注意的是,装饰器内部的调用可能需要考虑 self 参数,该参数作为第一个参数传递给方法。或者,您可能还希望将您的方法标记为 staticmethod 来避免这种情况。

子类化时的可用属性:- attach (可选 [Union[Sanic, Blueprint] ]):应用程序或蓝图

将视图附着到。

  • uri (Str):要将视图附加到的URI。

  • methods (可重复 [str] ):要将视图附加到的HTTP方法。

    默认为 {"GET"}

  • host (可选 [str] ):要将视图附着到的主体。

  • strict_slashes (可选 [bool] ):是否为以下项添加重定向规则

    带有尾随斜杠的URI。

  • version (可选 [int] ):要将视图附加到的版本。

  • name (可选 [str] ):要将视图附加到的名称。

  • stream (Bool):该视图是否为流处理程序。

  • version_prefix (Str):要用于版本的前缀。缺省值

    "/v"

classmethod as_view(*class_args, **class_kwargs)

用于路由系统的返回视图函数,该函数将请求发送到适当的处理程序方法。

如果需要将参数传递给类的构造函数,可以将参数传递给 as_view and they will be passed to the class `_ _init__`方法。

参数:

*class_args: Variable length argument list for the class instantiation. * *CLASS_KWARGS:类实例化的任意关键字参数。

返回:

RouteHandler:view函数。

例如:

``` Python类DummyView(HTTPMethodView):

Def__init__(self,foo:Myfoo):

Self.foo=foo

Async def Get(自身,请求:请求):

返回文本(self.foo.bar)

App.addroute(DummyView.as_view(foo=Myfoo()),“/”) ```

参数:
  • class_args (Any) --

  • class_kwargs (Any) --

返回类型:

Callable[[..], Coroutine[Any, Any, Optional[sanic.response.types.HTTPResponse, None]]]

classmethod attach(to, uri, methods=frozenset({'GET'}), host=None, strict_slashes=None, version=None, name=None, stream=False, version_prefix='/v')

将视图附加到指定URI处的Sanic应用程序或Blueprint。

参数:

CLS:此方法所属的类。至(联合 [Sanic, Blueprint] ):要附加到的Sanic应用程序或Blueprint。URI(Str):要将视图绑定到的URI。方法(可迭代 [str] ,可选):视图应该响应的HTTP方法的集合。默认为 frozenset({"GET"}) 。主机(可选 [str] ,可选):要将视图绑定到的一个或多个特定主机。默认为 None 。严格斜杠(可选 [bool] ,可选):强制或不强制使用尾部斜杠。默认为 None 。版本(可选 [int] ,可选):如果使用版本控制,则为API的版本。默认为 None 。名称(可选 [str] ,可选):路由的唯一名称。默认为 None 。Stream(bool,可选):启用或禁用视图的流。默认为 False 。VERSION_PREFIX(str,可选):如果使用版本控制,则为版本的前缀。默认为 "/v"

参数:
  • to (Union[Sanic, Blueprint]) --

  • uri (str) --

  • methods (Iterable[str]) --

  • host (Optional[str]) --

  • strict_slashes (Optional[bool]) --

  • version (Optional[int]) --

  • name (Optional[str]) --

  • stream (bool) --

  • version_prefix (str) --

返回类型:

None

dispatch_request(request, *args, **kwargs)

将请求调度到适当的处理程序方法。

参数:

request (sanic.request.types.Request) --

sanic.views.stream(func)

用于将函数标记为流处理程序的修饰符。