Flask Web 个人备忘笔记

WEB-PROJECT(o2o)

B2C: BUSSINESS TO CUSTOMER

C2C: CUSTOMER TO CUSTOMER

O2O: ONLINE TO OFFLINE(OFFLINE TO ONLINE)

项目编写

项目结构
  |- ihome
      |-ihome_main(项目源码)
          |-__init__.py
          |-api_1_0(蓝图)
              |- __init__.py(声明蓝图)
          |- libs(第三方SDK)
      |- manage.py
      |- config.py
项目结构步骤
  1. 编写初始化文件
  2. 编写蓝图初始化文件
  3. 编写项目配置文件(config.py)
  4. 创建项目启动管理文件(manage.py)
访问静态文件

简化静态文件路径(使用正则表达获取文件名,并拼接真实路径)

​ 创建蓝图(html),定义正则视图函数

​ 注册蓝图

​ 自定义正则类,继承于BaseConverter

class RegexConverter(BaseConverter):
    """在路由中使用正则表达式进行提取参数的转换工具"""
    def __init__(self, url_map, *args):
        super(RegexConverter, self).__init__(url_map)
        self.regex = args[0]
@html.route("/regex('.*'):file_name")
使用logging记录日志

日志等级:

DEBUG INFO WARNING ERROR NONE

    # 设置日志的记录等级
    logging.basicConfig(level=logging.DEBUG)  # 调试debug级
    # 创建日志记录器,指明日志保存的路径、每个日志文件的最大大小、保存的日志文件个数上限
    file_log_handler = RotatingFileHandler("logs/log", maxBytes=1024*1024*100, backupCount=10)
    # 创建日志记录的格式                 日志等级    输入日志信息的文件名 行数    日志信息
    formatter = logging.Formatter('%(levelname)s %(filename)s:%(lineno)d %(message)s')
    # 为刚创建的日志记录器设置日志记录格式
    file_log_handler.setFormatter(formatter)
    # 为全局的日志工具对象(flask app使用的)添加日后记录器
    logging.getLogger().addHandler(file_log_handler)
    logging.debug('this is a debug log')
    logging.info('this is a info log')

验证码

验证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apart”(全自动区分计算机和人类的图灵测试

Cookie: 客户端数据保持技术,由服务器生成,随着相应带到客户端,由客户端进行保存,并在下次请求时带回来.优点:减少服务器资源占用;缺点:安全性问题,占用数据流量.可以存储比较小的,不重要的数据.

Session:服务器端数据保持技术,将用户数据保存在服务器端.优点:安全性高,不占用流量;缺点:服务器资源占用较高,在多用户环境下,区分数据归属问题.

Redis:缓存类型的键值对数据库.需要用户请求中携带验证码唯一标识信息.

MySQL:中小型关系型数据库.用来长久保存数据,不适合验证码这种临时性数据.

MongoDB:非关系型数据库.存储文档对象的数据.相对于Redis效率较低.

current_app: flask内置全局字典型变量,flask服务器启动,current_app一直存在.

g: 在一次请求范围内,所有的方法可以访问.

接口文档

1.图片验证码接口

  • 功能描述:访问该接口,可以获取到验证码图片

  • URL: /api/v1.0/image_code/

  • 访问方式: GET

  • 传入参数:

    • 格式: url (json, xml)

      参数名参数类型是否必传说明
      image_code_idstring图片验证码编号
  • 返回参数

测试

  • 单元测试

    • 把assert语句组合在一起,放在特定的类函数里,就是python中编写单元测试的方式,这些测试函数组成的类叫做测试用例

      继承(unittest.TestCase)

      setUp(self):调用测试方法之前调用

      tearDown(self) :调用测试方法之后调用

  • 集成测试

  • 系统测试

记录错误次数,进行封IP操作

利用redis数据库的expire特性

获取IP:

request.remote_addr

记录错误次数:

redis_store.incr(key) # 自增(默认+1)

获取表单内所有输入框对象

var recv_dict = {}
$('form').serializeArray().map(function(x){recv_dict[x.name] = x.value})
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值