• 一个最小的应用
  • 调试模式
  • 路由
  • 静态文件
  • 模板渲染:
    • 除了/static, /templates 目录;
    • 在模版里面,可以访问request, session 和 g对象,以及get_flashed_messages.
    • 模版继承
  • 访问请求数据 request
    • 单元测试的最简单的解决方案是:用test_request_context()环境管理器。
    • 结合with声明,绑定一个测试请求,这样才可以与之交互。
  • 请求对象 
    • 当前请求的HTTP方法可以通过flask.request.method获得
    • 通过flask.request.form属性来访问表单数据(POST或PUT请求提交的数据)。
    • 通过request.args属性访问URL中提交的参数(?key=value
    • 具体看request文档
  • 文件上传
    • 在HTML 表单中设置 enctype="multipart/form-data" 属性
    • 已上传的文件存储在内存或是文件系统中一个临时的位置。可以通过request.files属性访问她们。
    • 每个上传的文件都会存储在这个字典里。
    • 它表现近乎为一个标准的Python file对象,但它还有一个save()方法,这个方法允许你把文件保存到服务器的文件系统上。
    • request.filename了解上传前在客户端的文件名—不要信任它,它可以伪造
    • 信任的文件名secure_filename()
  • Cookies
    • 通过request.cookies属性访问Cookies
    • 用响应对象response的set_cookie方法来设置Cookies.
    • 请求对象的cookies属性是一个内容为客户端提交的所有Cookies的字典。
    • 如果想要使用会话,不要直接使用Cookies。
    • Flask中,已经注意处理了一些Cookies安全细节。
    • Cookies是设置在响应对象上的。
    • 由于通常视图函数只是返回字符串,之后Flask将字符串转换为响应对象。
    • 如果要显式地转换,可以使用make_response()函数然后再进行修改。
  • 重定向和错误
    • redirect()
    • abort()
    • 定制错误页面,使用@app.errorhandler(404)装饰器
  • 关于响应 response
    • 视图函数的返回值会被自动转换为一个响应对象。
    • 如果返回值是一个字符串,它被转换该字符串为主体的、状态码为200 OK的、MIME类型是’text/html’的响应对象。
    • Flask把返回值转换为响应对象的逻辑是这样:
      • 如果返回的是一个合法的响应对象,它会从视图直接返回。
      • 如果返回的是一个字符串,响应对象会用字符串数据和默认参数创建。
      • 如果返回的是一个元组,且元组中的元素可以提供额外的信息。这样的元组必须是(response,status,headers)的形式,且至少包含一个元素。status值会覆盖状态代码,headers可以是一个列表或字典,作为额外的消息标头值。
      • 如果上述条件均不满足,Flask会假设返回值是一个合法的WSGI应用程序,并转换为一个请求对象。
    • 如果你想在视图里操作上述步骤结果的响应对象,可以使用make_response()函数。
  • 会话 session
    • 除请求对象之外,还有一个session对象。
    • 它允许你在不同请求间存储特定用户的信息。
    • 它是在Cookies的基础上实现的,并且对Cookies进行密钥签名。
    • 这意味着用户可以查看你Cookie的内容,但却不能修改它,除非用户知道签名的密钥。
    • 生成强壮的密钥:import os , os.urandom(24)
  • 消息闪现
    • 反馈,是良好的应用和用户界面的重要构成
    • 如果用户得不到足够的返回,他们很可能开始厌恶这个应用。
    • Flask提供了消息闪现系统,可以简单地用用户反馈。
    • 消息闪现系统通常会在请求结束时记录信息,并在下一个(且仅在下一个)请求中访问记录的信息。
    • 展现这些消息通常要结合模版布局。
    • 使用flash()方法可以闪现一条消息。
    • 要操作消息本身,请使用get_flashed_messages()函数,并且在模版中可以使用
  • 日志记录
    • Flask 0.3开始,Flask就已经预置了日志系统。
    • 附带的logger时一个标准日志类
      • app.logger.debug(‘A value for debugging’)
      • app.logger.warning(‘A warning occurred (%d apples)’,42)
      • app.logger.error(‘An error occurred’)
  • 整合WSGI中间件
    • 如果你想要给你的应用添加WSGI中间件,你可以封装内部WSGI应用。
    • 例如若是你想用Werkzeug包中的某个中间件来应付lightpd中的bugs
  • 部署到Web服务器
    • 部署到托管平台
      • and so on …

 

posted on 2017-12-14 09:24  Zoe233  阅读(112)  评论(0编辑  收藏  举报