我在Django中根据django.contrib.auth
来滚动我自己的自定义注册模块。我的注册模块将有一些额外的功能,并帮助我减少我目前使用的其他django模块的依赖,如django-registration和django-emailchange。我已经遇到了一个什么最好的方式来做它的问题。我应该在视图,模型还是管理器中放置自定义注册码?
注意:所有用户帐户都基于django.contrib.auth.models.User
模型。
当用户点击“注册”链接时,请求会传递到我的视图register
。我有一个自定义表单,它有四个字段 - 用户名,电子邮件,密码1和密码2。该表格基于django.forms.Form
。该表格提供了基本的验证, passoword1和password2是电子邮件;电子邮件/用户名不存在。
当数据被恢复到我的注册视图时,我调用表格的is_valid()
方法,之后,我通过调用中的名为create_user()
的管理器方法创建新用户。在这一点上,我需要添加更多的自定义功能,比如发送激活邮件等。作为一种最佳实践方法,这种逻辑应该放在哪里?这是否应该在User
模型的方法中?它应该是现在的位置 - 模型的经理?或者应该将其放入我的注册表单的自定义save()
方法中?
谢谢。
很好的答案。我真的在想“不要把它放在保存方法中”,但重新阅读我的答案后,我没有这样解释。而不是重写它,我正在收回那部分。 – 2010-07-13 15:37:40