0.1.6

更新内容

  • 添加CSRF APP,可以支持CSRF的保护
  • 増加在模板中可以使用块注释,可以忽略块内的模板代码
  • 优化makeproject生成的项目文件,増加.gitignore和local_settings.ini
  • 修复soap View模块中会两次调用__begin__和__end__的bug
  • 将functions和decorators机制进行抽象,提供Finder类,可以用它实现functions的机制
  • 使用inspect.isclass()来判断一个对象是否class,它可以兼容判断classic class和new style class
  • 修复 --version 命令参数的bug
  • 优化 import_mod_attr 函数,使其可以接受对象参数(原来只支持字符串路径形式)
  • 向 Dispatcher 増加 handler() 方法,可以用它返回的对象来执行:get(), post(), delete()等模拟客户端的RESTFul请求,例如:

    from uliweb import application
    
    handler = application.handler()
    r = handler.get('/index')
    #r is response object
  • 向 uliweb/utils/test.py 中添加 client_from_application() 方法
  • 向 make_application 和 make_simple_application 函数添加 dispatcher_cls和dispatcher_kwargs参数,可以在创建application时使用不同的Dispatcher类
  • 修复在extend同名模板时处理多次的bug
  • 添加upload APP中的filename_convert 至FUNCTIONS配置中
  • 向utils/common.py中添加 get_uuid() 函数
  • 修复 orm 中 get_collection_name() bug
  • 修复在进行json处理时,无法处理 0x00-0x1f 的bug
  • 添加 generic APP,将常用的几个View类添加至FUNCTIONS中。同时向generic中添加generic命令,可以用它自动生成List, Add, Edit, View, Delete的代码框架。目前已经支持可以生成angularjs, html, easyui三种风格的代码框架。并且在处理Add, Edit, Delete时还可以选择是否采用ajax方式进行处理。其它在通常的开发时,可以先使用generic来生成一个初始的代码版本,然后基于这个版本再进行开发。
  • 向BootstrapLayout中添加fieldset支持
  • 向DetailView返回的view对象中添加.f属性,可以用它来引用DetailView中的字段
  • 修改Form中的IntField生成HTML的Input控件时的类型为Number
  • 修改DateTimeField在生成HTML代码时不使用UTC时区
  • 修复使用 GET 或 POST在绑定同一个链接时,后者会替換前者的bug
  • 修复在ini中使用 u""" 或 u''' 时解析错误的bug
  • 在启动时,过滤无模板文件的目录,加快处理效率
  • 优化template_plugins中的use模块的定义方式,简单的定义可以直接写在settings.ini中,同时可以支持版本的配置功能
  • 修改模板中在处理Python代码缩近时,对return, continue, break的反缩近处理,全部采用判断pass
  • 向html.py中添加一个Builder类,使用它可以直接生成包含不同部分的对象,可以对这些部分分别进行处理,最终合成统一的字符串,也可以根据需要分开使用。主要用在HTML代码的生成,允许用户根据需要结合使用或分拆使用
  • 向ORM中的get(), filter()等处理添加额外的不定关键字参数,这些参数将在执行select时传递给select方法。目前可以使用它来实现for_update的处理,如:

    Model.get(Model.c.id==id, for_update=True)
    Model.filter(condition).for_update().filter(condition)
  • 关于for_update可以参考sqlalchemy相关的文档
  • 优化generic.py中的ListView和SimpleListView的处理,可以自动识别request中的page和rows值,当调用时没有传入pageno或rows_per_page参数时生效。
  • 添加 secretkey APP,可以用它进行加解密的处理。加密类可以由用户进行配置。纯Python的DES算法实现,可以考虑使用pyDes库。同时提供 uliweb makekey命令,可以自动生成key文件。key文件的路径可以配置到settings.ini中。加解密示例如下:

    from uliweb import functions
    des = functions.get_cipher()
    d = des.encrypt('hello')
    des.descrypt(d)
  • 删除pagecache APP
  • 优化 safe_unicode 和 safe_str 函数,可以支持 i18n 的LazyString对象
  • 向 commands.py 模块中添加 get_input() 方法 ,可以用来当参数值不存时从命令行获得一个值
  • 删除0.1.4中提供的APPS_LAYOUT的机制,但是可以在模板中替換为:

    {{extend settings.APP_LAYOUTS.get('messages', 'layout.html')}}

    因此仍然可以把要替換的模板配置到settings.ini中。另一种办法是在新的app中直接定义一个要替換的同名模板,以实现新的要求。