提供自定义身份验证后端,以便用户可以通过电子邮件地址而不是用户名注册到站点。还为整个注册工作流提供了一组标准模板和sane url映射。

django-registration-email的Python项目详细描述


重要信息
==


由于放弃Django注册,此应用程序已停止。另外,市场上还有许多开发良好且更广泛的替代品。

why don't you't check out``django allauth`:https://github.com/pennersr/django allauth

它已经集成到我们的项目模板(包括模板和设置):https://github.com/bitmazk/django project template/
我们使用这个应用程序的方式。

=========


我们在几乎所有项目中都使用
[django注册](https://bitbucket.org/ubernostrum/django注册/overview)
。但是,我们不喜欢django有限的用户名
,我们希望允许用户通过电子邮件注册。


此项目提供自定义身份验证后端,允许用户通过电子邮件进行身份验证。我们还提供了一个emailregistrationform,它可以检查是否已经接收了电子邮件。

-注册
和django的auth,使用一个干净和合理的结构,您将找到一个默认的
所有必需的模板集。

用法
==


安装此包::


添加"注册"和"注册"电子邮件o您的"已安装的应用程序":所有其他应用程序

帐户激活天数=7
身份验证后端=(
"registration\u email.auth.emailbackend",

登录重定向URL='/'


运行``syncdb`:

./manage.py syncdb

设置
==

django注册电子邮件引入了一个新设置:


_ success_url
----------

默认值:``lambda request,user:'/```

函数返回成功激活帐户后重定向到的url
。如果您将此设置保留在"lambda request,user:"/"``中,则它将指向您的基本URL。


如果在"lambda请求"中保留此项,则用户:"/"``将
指向您的基本URL。


如何使用自定义表单
====


为了实现这一点,您需要执行以下操作:

在项目中创建一个自定义表单并给它一个"forms.py"
ilregistrationform):
first_name=form s.charfield()
last_name=forms.charfield()

不要重写表单的"save()"方法。

覆盖url u

现在您需要告诉注册视图它应该使用
自定义表单:

tomemailregistrationform

urlpatterns=[

url(
r'^accounts/register/$',
registration view.as廑view(
template廑name='registration/registration廑form.html',
form廑class=customemailregistrationform,
get_success_url=getattr(
设置,'registration_email_register_success_url',
lambda请求,用户:'/',
),
名称='registration_register',
),

url(r'^accounts/',包括de('registration_email.backends.default.url'),

]


在上面的"url.py"中创建一个信号处理程序,我使用的是"simplebackend"。当您查看[后端](https://github.com/nathanborror/django registration/blob/master/registration/backends/simple/\uu init_py_l30)时,您将看到在创建并登录
用户后,后端发送一个信号。信号将获取访问表单验证并发送的
数据所需的所有参数,因此让我们在my registration.models.py
from django.dispatch import receiver
from registration.signal s import user\注册

@receiver(user_registered)
def user_registered_handler(sender,user,request,**kwargs):
user.first_name=request.post.get('first_name')
user.last_name=request.post.get('last_name')
user.save()

确认您连续保存用户两次。如果
您担心性能问题,则必须创建自己的
`my_registration.backends.customregistrationbackend`类。该类将继承registration.backends.simple.simplebackend并重写register方法,但实际上,我们在这里讨论的是注册,我无法想象保存两次用户会有什么危害。/>如果您的
``settings.py``中有另一个值"authentication_backends`",那么它可能会保存在您的``django_session``
表中。除了删除表中的行之外,我找不到其他方法了。

todo
==


*密码重置链接指向原始django模板

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
ws-consumer服务地址中的java动态属性   java如何比较整数列表,然后按升序排序?   javascript我正在使用java脚本调用一个函数,但它没有调用代码下面的方法,也没有调用secretitnames()函数   在文本窗格中多次使用Java insertIcon图标   JavaMSAL安卓。AuthenticationActivity完成,但用于身份验证请求的线程池线程仍处于等待状态   if语句中的java多范围比较   java toString()表示输出   java如何在jcstrest测试中生成指令重新排序   java我怎样才能运行它?   web应用程序中使用Hibernate和Spring的java问题   如何将字符串数据写入Java文本文件   如何在java命令提示符下运行已签名的jar文件?   java从我的菜单调用RCP应用程序   java如何等待Canvas/GraphicsContext完成任务,然后再继续执行代码块?