django-registration 0.8 中文文档[原创] ——升级指南

 

django-registration 0.8完全重写了早期的基础代码,引入了大量新特性,在灵活性和定制化方面得到了很大提高。虽然我们尽可能保持旧版本的兼容性,但不可避免地还是存在一些变化需要我们升级到0.8版的设置。这篇文档是对这些变化的总结,新特性在0.8版本中是有效的。

 

所需的Django版本

django-registration 0.8需要Django1.1或更新版本;因为0.8版利用了Django1.1才推出的一些特性。

 

兼容性变化

如果你从旧版本升级,使用的是默认设置,大部分都能继续运行。但是,旧的URLconf在django-registration 1.0版本中将会被废弃,所以推荐你现在开始迁移。将registration.urls 改为 registration.backends.default.urls,如下:

(r'^accounts/', include('registration.urls')),

改为:

(r'^accounts/', include('registration.backends.default.urls')),

旧的include在django-registration 1.0前继续有效,在0.8版本中会抛出PendingDeprecationWarning,在0.9版本中会抛出DeprecationWarning,1.0版本就会完全移除。
 

注册视图的变化

用于控制用户注册的视图在django-registration 0.8中相当大程度上变化了。现在所有视图都需要参数关键字参数backend,指定使用的

registration backend

,所以这些视图匹配的URL必需支持参数。默认backend提供的URLconf正确的传递了这个参数。
 
register()视图中的profile_callback参数已被移除;它的功能现在可以通过自定义backend轻松实现,或者通过在注册过程中发送signals。
 
activate()视图对是否成功激活跳转是有争议的;在默认backend中会跳转到

registration_activation_complete

匹配的URL;默认设置下,会跳转到渲染的模板

registration/activation_complete.html

,所以默认backend和默认配置下这个模板会显示出来。其他backends通过

post_activation_redirect()

方法跳转到指定位置,通过场地关键字参数success_url到activate()中这个跳转会被覆盖掉。激活不成功,activate()视图仍然显示同样的模板,但是他的上下文改变了:这个上下文简单地由URL捕获的和视图参数中的关键字参数组成。
 

注册表单的变化

以前,用于在注册中手机数据的表单被实现在save()方法(创建新帐户)中。现在不再这样,创建新帐户是由backend控制,所以任何自定义逻辑应该移动到自定义backend中去,或者在注册过程中发送

signals

 

RegistrationProfile模型的变化

RegistrationManager

create_inactive_user()

方法现在必须添加一个参数:site。这个参数让django-registration容易被使用,而不管是否安装了

django.contrib.sites

,因为一个

RequestSite

对象被传递进去,而不是正规的Site对象。
 

user_registered

标志不再由

create_inactive_user()

发送,

user_activated

标致不再由

activate_user()

发送;这些标志现在都在这些方法被调用后由backend发送。注意,这些标志都是在django-registration 0.7后增加的,而不是重构之前,在backend API中会介绍,因此只有跟踪开发代码库的设置才能使用它们。
 
激活邮件的发送已经从

create_inactive_user()

方法中提取出来,现在作为

RegistrationProfile

实例的

send_activation_eamil()

存在。
posted on 2011-12-17 17:35  PythonHome  阅读(2113)  评论(0编辑  收藏  举报