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