利用Django-registration开源框架自定义适合自己应用的注册验证(1)
来源:互联网 发布:2017淘宝图片尺寸 编辑:程序博客网 时间:2024/06/05 13:34
长话短说,django可重用的的app其实还是有很多拘束,毕竟设计出来不是针对所有应用的。就比如说django-registration 这个开源框架吧,相信好多朋友会对它的功能感兴趣。
它实现了发邮件验证注册的功能。看官方文档 http://django-registration.readthedocs.org/en/latest/ ,它只提供了两种用法deflaut 和simple 。试用后发现效果不尽人意,因为form提供的字段只有4个 username,email,password,password(again)。你一定会想,注册用户的时候性别和部门也是必不可少的,虽然他们可以留着注册完后编辑profile来实现赋值入库。但是总感觉怪怪的,因为如果你构建的是社交应用,性别是首选注册要填写的内容吧
首先说一下我的开发环境:
- django1.6
- IDE:PyCharm(真的很好用 比wingide强多了 最赞的是有bash窗口 有run工具集)
- 注册用户所用的django-registration (下载地址)-> https://pypi.python.org/pypi/django-registration/这里我啰嗦一下,为什么要用源码而不用pip install djang-registration(当然省事你可以这样做)。因为会涉及到其他应用的配置问题,除非你只开发一个app。把源码解压(不要去install 或者python setup.py )直接把源码中关于可重用app的文件夹放到你的工程文件夹中 然后在settings文件中设置一下installed_app就ok了,如果syncdb出现no module namedXXX的错误,去看看你添加到工程文件夹下的文件夹中是否含有__init__.py和models.py文件。没有的话创建一个空的就行
我们首先要做的就是扩展auth.user模型,因为user模型中字段少的可怜,就比如我们需要添加department(部门)字段.网络上有好多方法大家都可以google到,大致分为三种,一种是利用OneToOneFiled,一种是重写User,当然你也可以暴力修改源代码了。可能还有许多巧妙高效的方法,这里不再阐述,逼近博主才入门不久,就拿最简单的OneToOne来说吧
为了良好的编程和层次习惯,强烈建议创建account或者customuser类似意思的app,这里我们就叫customuser吧。创建customuser的目的很简单,就是为了扩展auth.user而来的。直接上码吧
from django.db import modelsfrom django.contrib.auth.models import Userfrom django.db.models.signals import post_savefrom django.dispatch import receiverclass Customuser(models.Model): user = models.OneToOneField(User) department = models.CharField(max_length=100)@receiver(post_save, sender = User)def create_customuser(sender, instance,created, **kwargs): if created: Customuser.objects.get_or_create(user = instance)很简单吧,Customuser就是为了扩展user而创建的model 它拥有一个和User OneToOne的字段这样就把他们两关联起来了,下面的@receiver包装器是为了发送signal信号用的,如果你不懂signal,那也没关系。你就这样理解,User模型是发送者,Customuser是接受者,当User被创建了(if created:)就会去给Customuser模型发送消或者说是信号吧(signla),这样Customuser就会接收到发送者的参数,创建一个和具体发送信号的User实例关联的Customuser实例(它会把这个User实例存储在自己的user字段下)
接下来你就可以去浏览器下登录admin观察了,你会发现当你每创建一个user对象的时候 customuser都会自动创建一个object。(记得在admin.py中注册Customuser模型)
现在进入正题了,如何把刚刚扩展的department字段添加到django-registration的注册表单中去。
先把registration文件夹重命名,然后它放入你的工程目录下。(下图是我修改前后的树状图,我已经把没用的文件都删掉了,registration中的backends 我没用,我自己创建了backends然后添加了__init__.py,models.py文件,urls.py 和 views.py中的代码和源代码是差不多的)
完成了这步后 就可以随便修改eleregistration了 记得备份一份(registration ),改坏了还可以重头再来嘛
注意:一下代码以(Eleuser)eleuser 充当Customuser
修改之前,先说说eleregistration下forms,models,views这三个py文件的功能和作用。forms 是提供表单模型的,相当于context。views 是负责调度和template渲染的,models 中有负责注册的模型和对模型的管理者。看代码细说把 forms.py:
在form中添加所需的字段
department = forms.CharField(label=(u'Department'))form中的修改就这一处啦,当然你也可以添加更多的字段,前提是你在Customuser模型中有这些字段
看看models.py:
models的改动也很少就添加了
<span style="white-space:pre"></span>new_eleuser = Eleuser.objects.get(user = new_user) new_eleuser.department = department new_eleuser.save()是找到和相关user的eleuser 然后给字段赋值保存的过程
views.py中的代码都不用修改
最后来看看自定义backends中的代码:
修改了源文件中的view名,添加了department字段
ok了 现在看看settings文件中的修改:
把backends 最为app添加了,这样就可以在urls中include了
相关的templates 还有修改过的eleregistration 有需要的 我可以mail
写的少,写的不好,看不懂的请细问 谢谢
- 利用Django-registration开源框架自定义适合自己应用的注册验证(1)
- Django框架下用户注册邮箱验证功能的实现
- 总结一些适合自己的验证
- 利用jQuery开发适合自己的插件
- 利用Debian定制适合自己的系统
- django-registration
- Python的Django框架应用(1)
- Django 注册邮箱验证
- Django框架学习笔记(16.利用ajax实现简易的验证)
- django 自定义auth的中间件的验证
- 自己定义的验证框架
- 自己写的jQuery下的验证框架,支持自定义验证函数,支持自定义错误显示效果
- 自定义UTI注册自己的APP
- Django使用自定义验证
- SSM框架下的注册验证
- Django小开发《采用验证码的注册页代码》
- 搭建自己的Django应用(1)Writing your first Django app, part 1
- 如何选择适合自己的开源软件
- android中调用requestFocus()的详细过程
- Filter原理及应用
- myeclips利用ant生成的doc报告出现乱码
- 点击提交按钮触发ajax请求时,做到处理完前一个请求后再处理第二个请求
- <转载>Android下拉刷新功能实现
- 利用Django-registration开源框架自定义适合自己应用的注册验证(1)
- linux中CURL的安装
- 无法启动链接服务器 "........" 的 OLE DB 访问接口 "SQLNCLI10" 的嵌套事务。由于 XACT_ABORT 选项已设置为 OFF,因此必须使用嵌套事务。
- 转:全文检索基本原理详解
- tomcat 启动时 Initializing Spring root WebApplicationContext停止启动
- 解决android帮助文档打开慢
- Struts2拦截器
- UVA 10422 - Knights in FEN
- JVM总结