前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Werkzeug学习笔记

Werkzeug学习笔记

作者头像
全栈程序员站长
发布2022-11-08 17:31:38
4720
发布2022-11-08 17:31:38
举报
文章被收录于专栏:全栈程序员必看

useragent模块

  1. UserAgent(ua:str)
代码语言:javascript
复制
    # ua测试字符串
    ua = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36'
    # 实例化
    user_agent = useragents.UserAgent(ua)
    .platform -> windows
    .version -> 60.0.3112.101
    .string -> Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36
    .language -> None
    .brower -> chrome

urls模块

routing模块

wsgi模块

  1. get_current_url(environ, root_only=False, strip_querystring=False,host_only=False, trusted_hosts=None)
  2. host_is_trusted(hostname, trusted_list) -> 暂时不清楚
  3. get_host(environ, trusted_hosts=None) -> 传入env,获取host
  4. get_content_length(environ)
  5. get_input_stream(environ, safe_fallback=True, max_content_length=None)
  6. get_input_stream(environ, safe_fallback=True, max_content_length=None) -> 从WSGI环境返回输入流,并以最明智的方式进行包装。 在大多数情况下,返回的流不是原始的WSGI流,但是在不考虑内容长度的情况下可以安全地读取流。(暂时不清楚)
  7. get_query_string(environ)
  8. get_path_info(environ, charset='utf-8', errors='replace') -> URL路径除了起始部分后的剩余部分,用于找到相应的应用程序对象,如果请求的路径就是根路径,这个值为空字符串 从WSGI环境返回“PATH_INFO”,并正确解码它。 这也关注了在Python 3环境下的WSGI解码舞蹈。 如果charset设置为None,则返回一个bytestring。(暂时不清楚)
  9. get_script_name(environ, charset='utf-8', errors='replace')
  10. pop_path_info(environ, charset='utf-8', errors='replace') -> 删除并返回“PATH_INFO”的下一个段,将其推送到“SCRIPT_NAME”上。 如果PATH_INFO上没有任何内容,则返回None。 如果charset设置为None,则返回一个bytestring。 如果有空段('/ foo // bar)这些被忽略,但被正确地推到“SCRIPT_NAME”
  11. peek_path_info(environ, charset='utf-8', errors='replace') -> 如果没有,返回“PATH_INFO”或“无”的下一个段。 工作原理如下:func:pop_path_info而不修改环境
  12. extract_path_info(environ_or_baseurl, path_or_url, charset='utf-8', errors='replace', collapse_http_schemes=True) -> 从给定的URL(或WSGI环境)和路径中提取路径信息。 返回的路径信息是一个unicode字符串,而不是一个适合WSGI环境的bytest。 这些URL也可能是IRI。 如果无法确定路径信息,则返回“None”
  13. class SharedDataMiddleware(object) -> 用于处理静态文件
  14. class DispatcherMiddleware(object) -> 组合多个app application = DispatcherMiddleware(firstapp, {'/secondapp': secondapp, '/thirdapp': thirdapp}) run_simple('localhost', 5000, application, use_reloader=True, use_debugger=True)

wrappers模块

BaseRequest对象

form属性,数据结构为werkzeug.datastructures.ImmutableMultiDict,可以通过parameter_storage_class来修改(如果表单顺序有要求,这可能是必需的)

valules属性,把form表单和get参数组合起来放在一个字典里面,数据结构为CombinedMultiDict。例如:

代码语言:javascript
复制
CombinedMultiDict([ImmutableMultiDict([('name', 'xiaoming')]), ImmutableMultiDict([('age', '12')])])
    取值:
        name = values.get('name')
        age = values.get('age)

files属性,包括所有的上传文件。数据结构werkzeug.datastructures.MultiDict,键名为input标签的name属性,每个value代表一个真实文件,数据结构为werkzeug.datastructures.FileStorage,就像一个标准的Python文件对象,不过有一个单独的方法.save()用来将文件存放在本地。注意客户端需使用POST/PUT/PATCH的其中一个方式,并且表单要设置enctype="multipart/form-data,否则会接收到空字典

cookies属性,一个字典,里面存放了cookies信息

headers属性,数据结构werkzeug.datastructures.EnvironHeaders,从WSGI环境里面读出来的头信息,dict形式

full_path属性,http://localhost:5000/form?namea=xiaoming -> /form?namea=xiaoming

script_root属性,The root path of the script without the trailing slash.

url属性,全路径

base_url,基本路径http://localhost:5000/form?namea=xiaoming -> http://localhost:5000/form

url_root -> 根路径 http://localhost:5000/form?namea=xiaoming -> http://localhost:5000/

host_url -> host+协议 http://localhost:5000/form?namea=xiaoming -> http://localhost:5000/

host -> localhost:5000

query_string get的查询数据 http://localhost:5000/form?namea=xiaoming ->b'namea=xiaoming'

method 请求方法GET/POST

access_route 如果转发的头部存在,这是从客户端ip到最后一个代理服务器的所有ip地址的列表

remote_addr -> 客户端IP

remote_user -> If the server supports user authentication, and the script is protected, this attribute contains the username the user has authenticated as.

scheme -> 协议 http/https

is_xhr属性,用X-Requested-With来判断的,所以不一定可信

environ一个wsgi和env对象,是一个字典

  • REQUEST_METHOD -> GET|POST
  • SCRIPT_NAME -> ''
  • PATH_INFO -> /form
  • QUERY_STRING -> namea=xiaoming
  • SERVER_NAME -> 127.0.0.1
  • SERVER_PORT -> 5000
  • HTTP_HOST -> localhost:5000
  • SERVER_PROTOCOL -> HTTP/1.1
  • wsgi.url_scheme -> http
  • CONTENT_TYPE -> ”
  • CONTENT_LENGTH -> 0
  • HTTP_CONNECTION -> close
  • HTTP_COOKIE
  • HTTP_ACCEPT_LANGUAGE -> zh-CN,zh;q=0.8
  • HTTP_ACCEPT_ENCODING -> gzip, deflate, br
  • HTTP_DNT -> 1
  • HTTP_ACCEPT -> text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
  • HTTP_USER_AGENT
  • HTTP_UPGRADE_INSECURE_REQUESTS
  • HTTP_CACHE_CONTROL -> max-age=0
  • HTTP_HOST -> localhost:5000
  • REMOTE_PORT -> 50556
  • REMOTE_ADDR -> 127.0.0.1
  • SERVER_SOFTWARE -> Werkzeug/0.12.2
  • wsgi.version -> 1,0
  • wsgi.url_scheme -> https
  • wsgi.input -> ''
  • wsgi.errors
  • wsgi.multithread -> False
  • wsgi.multiprocess -> False
  • wsgi.run_once -> False

BaseResponse对象 – set_cookie(self, key, value='', max_age=None, expires=None, path='/', domain=None, secure=False, httponly=False) -> 设置响应体的Cookies – delete_cookie(self, key, path='/', domain=None) -> 删除cookie

utils模块

  1. secure_filename(filename) -> 返回安全文件名
  2. escape(s,quote=None) -> 字符串转义
  3. unescape(s) -> 反转义
  4. redirect(location, code=302, Response=None) -> 重定向
  5. append_slash_redirect(environ, code=301) -> 给url的尾巴上添加/,以生成唯一的url。haonse.com -> haonse.com/

serving模块

security模块

  1. pbkdf2_hex(data, salt, iterations=DEFAULT_PBKDF2_ITERATIONS,keylen=None, hashfunc=None) -> 类似 :func:pbkdf2_bin, but 返回一个 hex-encoded 字符串
  2. pbkdf2_bin(data, salt, iterations=DEFAULT_PBKDF2_ITERATIONS, keylen=None, hashfunc=None) -> pbkdf2算法生成密钥
  3. safe_str_cmp(a, b)– > 两个字符串比较
  4. gen_salt(length) -> 生成一个盐(随机字符串)
  5. generate_password_hash(password, method='pbkdf2:sha256', salt_length=8) -> 用指定的方法和盐的长度生成密码
  6. check_password_hash(pwhash, password) -> 验证上面的
  7. safe_join(directory, *pathnames) -> 生成一个安全的path

local模块

formparser模块

http模块

  1. wsgi_to_bytes(data) -> 将data转成latin1
  2. bytes_to_wsgi -> 相反
  3. parse_cookie(header, charset='utf-8', errors='replace', cls=None): -> 把raw_cookies解析成一个字典
  4. dump_cookie(key, value='', max_age=None, expires=None, path='/', domain=None, secure=False, httponly=False, charset='utf-8', sync_expires=True, max_size=4093): -> 装成一个cookie

filesystem模块

  1. get_filesystem_encoding -> 返回系统编码。注意:这与Python对文件系统编码的理解不同,不建议将此值用于Python的unicode API。(不知道这个函数是用来干什么的,用到了再看)

datastructures模块

exceptions模块

posixemulation模块

test模块

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/185009.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年10月7日 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • useragent模块
  • urls模块
  • routing模块
  • wsgi模块
  • wrappers模块
  • utils模块
  • serving模块
  • security模块
  • local模块
  • formparser模块
  • http模块
  • filesystem模块
  • datastructures模块
  • exceptions模块
  • posixemulation模块
  • test模块
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档