Django 1.2新特性重点导读

renwofei423 发布于 2010/06/18 22:44
阅读 903
收藏 2

欢迎来到Django 1.2!
经过将近一年的开发,Django 1.2 加入了让人振奋的新特征和修正了大量的Bug,以下文档将有助你了解Django 1.2和从老版本升级到Django 1.2注意事项。
概述:
Django 1.2引入了几个大的重要的特性,它们包括:
-单个实例中多个数据库的支持
-类似于Form验证的Model验证
-增强型的跨域请求保护 CSRF框架
-一个全新的基于cookie和session的不受限于匿名用户的用户消息框架
-对象级别的权限,匿名用户权限和更灵活的用户名字符
-可自定义的邮件发送后端
-新的轻量级的if 模板标签
以上这些都是大概的列举,详情参考以下页面
兼容性的大概说明:
-Django 1.2不再支持宿主言语Python2.3. 请参考整个文档说明
-全新跨域请求保护框架不兼容老版本,但不影响老版本的使用,直到Django1.4,升级到全新的框架,请务必了解一下 详情
-自定义的子类字段,有几个方法发生改变了,详情参考get_db_prep_*()系列方法
-一些内置的模板标签有了变化;自定义模板标签需要存储状态了,新的规则参考 stateful template tags
-需要修饰器中user_passes_test,login_required和permission_requiredmethod的话,需要多套用一个method_decorator,参考详情
以上这些同样是重点的向后兼容的大概列举,老版本升级的时候强烈推荐阅读以下 backwards-incompatible changes  the list of deprecated features文档。
Django 1.2 对Python版本的兼容性
目前为止,我们严格在Python2.4 2.5 2.6 和2.7上良好运行,并做到了对这几个版本的兼容,但对python2.3和以下版本不再做到兼容,这些变化只是对少数人产生影响,因为很多服务器提供商都采用了2.4或以上的python版本了,如果你想在python2.3环境中使用Django的话,请使用Django1.1.1或之前的版本。
未来Django的兼容性,会慢慢过渡到Python3系列。
Django 1.2 的新特性(参考了JAY的原文

-支持指定多个数据库。
Django 1.2 项目项目中终于可以使用多个数据库了。查询可以通过using方法查询制定的数据库,保存数据的时候同样可以在save方法中指定参数,保存到指定的数据库。
-开发人员受Form validation的启发,也给model加上了validation验证

-增强对CSRF攻击的防护功能
Django1.2现在大大增强了跨域请求攻击的保护,安全性有了很大的提高。
-新增加了一个强大可配置的消息框架。
全新的消息框架功能很强大,可配置性灵活,以前只是认证用户能使用消息框架,现在匿名用户也可以使用它了。全新消息框架基于cookie和session。很实用的东西。
-可以在对象级别定义权限
每个对象级的权限功能被添加到原先的权限模块中。虽然没有在Django核心中加入,但你可以在自定义验证后端中使用它,django.contrib.auth.models.User 就用到了它,有关用户验证更多信息 

-可以为匿名用户提供权限

-内建的User现在对用户名的限制更为宽松
内建的用户实体的用户名现在更为宽松,在原来的基础上追加字符:@,+,- 字符。而且username可以为中文。
-需要自定义email发送的童鞋可以看看新加的Email Backend
-智能的增强版if标签
{% ifnotequal a b %}
 ...
{% endifnotequal %}
现在可以:
{% if a != b %}
 ...
{% endif %}
万不得已时,尽量少使用{% ifnotequal %} {% ifequal %}吧。if标签的操作符有:==, !=,<,>,<=,>=,in 和not in,而且and or not已经得到很好的支持了,超酷。
-模板缓存
在先前Django的版本中,每次你渲染模板的时候都需要在硬盘中重新加载,而现在的Django1.2,你可以使用cachedtemplate loader 装载模板,在每次渲染页面的时候,就直接在缓存里取模板了。因此渲染页面有了质的飞跃,特别对有大量的零碎模板的情况(比如使用 {%extends%}和{%include%}标签)更有利。
-Fixture里面如今支持Natural Key,这使得fixture可读性大大上升。
-测试新增--fastfail参数,在遇到错误时直接退出,而不进行后面的测试。
-Model现在支持64位整型字段——BigIntegerField。
-增强多语言处理,如今在处理时间和form的时候会参考当前的locale进行本地化。
-ModelAdmin开始支持readonly_fields。
-django-admin.py/manage.py可以从DJANGO_COLORS环境变量里读取高亮设置,在支持ASCII色彩的终端里面输出装b的彩色文字
-Syndication可以直接作为view在URLconf里面使用。
-GeoDjango增加了一些新功能。
-admin中的inline操作使用了js进行了增强,UE更酷更爽更舒服。
如果用户在浏览器中启用了JavaScript,Admin后台允许动态添加和删除inline实体;如果浏览器某开启JavaScript,inline实体的操作上没有改变。
-模板标签now新增两个格式化字符:c和u。
模板中新增的格式化字符 c输出ISO 8601格式的字符,u输出带微秒的时间字符。

加载中
0
Sephiroth
Sephiroth

终于把ifequal换成==了...

暂时不应用到项目,静观其变

返回顶部
顶部