Python的Django中django-userena组件的简单使用教程


Posted in Python onMay 30, 2015

利用twitter/bootstrap,项目的基础模板算是顺利搞定。接下来开始处理用户中心。

用户中心主要包括用户登陆、注册以及头像等个人信息维护。此前,用户的注册管理我一直使用django-registration。只是这个APP有些不思进取,09年发布了0.8alpha版后就一直没什么动静。这次决定尝试另外一个用户模块组件django-userena。

相比django-registration,django-userena的功能要完善的多。除基础的登陆注册模块外django-userena甚至还带了站内消息功能。django-userena的易用性方面也做的非常的不错。django-userena自带了默认模板,并有提供一个完整的演示项目,让你可以轻松上手。这里有个官方的在线demo,感兴趣可以去看看。
django-userena同twitter/bootstrap的整合

我们自然是希望所有的APP不用做任何修改,拿来就能用了。不过事与愿违,在整合的过程中多多少少都会遇到一些问题。django-userena默认的模板在项目中显示的非常难看。我们需要重写django-userena的默认模板,并且用django-bootstrap来生成form。

forms.py
#为原始form添加BootstrapMixin
from bootstrap.forms import BootstrapMixin

class BsAuthenticationForm(AuthenticationForm, BootstrapMixin):
 def __init__(self, *args, **kw):
  super(BsAuthenticationForm, self).__init__(*args, **kw)
  self.__bootstrap__()
 
urls.py
#重写urls,指定使用的form
from django.conf.urls.defaults import *
from userena import views as userena_views
from profiles.forms import BsSignupForm, BsAuthenticationForm

urlpatterns = patterns('',
 url(r'^signup/$', userena_views.signup,
  {'signup_form': BsSignupForm}, name='userena_signup'),
 url(r'^signin/$', userena_views.signin,
  {'auth_form': BsAuthenticationForm}, name='userena_signin'),
 (r'^', include('userena.urls')),
)

中文用户名问题

同django-admin一样,django-userena也无法使用中文进行注册。对于一个中文网站而言,不能使用中文注册ID似乎有些太不合理的。

django-userena使用正则表达式对用户名进行校验,重写注册form修改认证规则即可取消该限制。

USERNAME_RE = r'^\S+$'
attrs_dict = {'class': 'required'}

class BsSignupForm(SignupForm, BootstrapMixin):
 username = forms.RegexField(regex=USERNAME_RE,
        max_length=30,
        widget=forms.TextInput(attrs=attrs_dict),
        label=_("Username"),
        error_messages={'invalid': _('Username must contain only letters, numbers, dots and underscores.')})

 def __init__(self, *args, **kw):
  super(BsSignupForm, self).__init__(*args, **kw)
  self.__bootstrap__()
Python 相关文章推荐
用Python的urllib库提交WEB表单
Feb 24 Python
Python常用时间操作总结【取得当前时间、时间函数、应用等】
May 11 Python
Python实现可设置持续运行时间、线程数及时间间隔的多线程异步post请求功能
Jan 11 Python
python实现简单神经网络算法
Mar 10 Python
python2.x实现人民币转大写人民币
Jun 20 Python
pandas 层次化索引的实现方法
Jul 06 Python
详解PyTorch手写数字识别(MNIST数据集)
Aug 16 Python
Python实现报警信息实时发送至邮箱功能(实例代码)
Nov 11 Python
python实现批量处理将图片粘贴到另一张图片上并保存
Dec 12 Python
python3实现raspberry pi(树莓派)4驱小车控制程序
Feb 12 Python
django Model层常用验证器及自定义验证器详解
Jul 15 Python
基于Python编写一个计算器程序,实现简单的加减乘除和取余二元运算
Aug 05 Python
在SAE上部署Python的Django框架的一些问题汇总
May 30 #Python
python实现比较两段文本不同之处的方法
May 30 #Python
python统计文本文件内单词数量的方法
May 30 #Python
python使用win32com库播放mp3文件的方法
May 30 #Python
基于wxpython开发的简单gui计算器实例
May 30 #Python
python图像处理之镜像实现方法
May 30 #Python
python图像处理之反色实现方法
May 30 #Python
You might like
simplehtmldom Doc api帮助文档
2012/03/26 PHP
php检测iis环境是否支持htaccess的方法
2014/02/18 PHP
PHP+ajaxfileupload+jcrop插件完美实现头像上传剪裁
2014/06/09 PHP
基于PHP实现假装商品限时抢购繁忙的效果
2015/10/16 PHP
PHP+Redis事务解决高并发下商品超卖问题(推荐)
2020/08/03 PHP
JavaScript网页制作特殊效果用随机数
2007/05/22 Javascript
Google 静态地图API实现代码
2010/11/19 Javascript
javascript使用location.search的示例
2013/11/05 Javascript
JS 操作Array数组的方法及属性实例解析
2014/01/08 Javascript
javascript基于prototype实现类似OOP继承的方法
2015/12/16 Javascript
学习React中ref的两个demo示例
2018/08/14 Javascript
vue在手机中通过本机IP地址访问webApp的方法
2018/08/15 Javascript
一步一步的了解webpack4的splitChunk插件(小结)
2018/09/17 Javascript
关于AngularJS中ng-repeat不更新视图的解决方法
2018/09/30 Javascript
vue拖拽组件 vuedraggable API options实现盒子之间相互拖拽排序
2019/07/08 Javascript
详解vue中多个有顺序要求的异步操作处理
2019/10/29 Javascript
[40:03]Liquid vs Optic 2018国际邀请赛淘汰赛BO3 第一场 8.21
2018/08/22 DOTA
二种python发送邮件实例讲解(python发邮件附件可以使用email模块实现)
2013/12/03 Python
Python socket.error: [Errno 98] Address already in use的原因和解决方法
2014/08/25 Python
python实现将pvr格式转换成pvr.ccz的方法
2015/04/28 Python
Python实现大文件排序的方法
2015/07/10 Python
python 类对象和实例对象动态添加方法(分享)
2017/12/31 Python
详谈pandas中agg函数和apply函数的区别
2018/04/20 Python
Python OpenCV处理图像之图像直方图和反向投影
2018/07/10 Python
Django使用 Bootstrap 样式修改书籍列表过程解析
2019/08/09 Python
美国网上眼镜供应商:LEOTONY(眼镜、RX太阳镜和太阳镜)
2017/10/31 全球购物
新电JAVA笔试题目
2014/08/31 面试题
当文件系统受到破坏时,如何检查和修复系统?
2012/03/09 面试题
农场厂长岗位职责
2013/12/28 职场文书
实习单位接收函模板
2014/01/10 职场文书
网站创业计划书
2014/04/30 职场文书
理发店策划方案
2014/06/05 职场文书
企业法人代表任命书
2014/06/06 职场文书
法律专业大学生职业生涯规划书:向目标一步步迈进
2014/09/22 职场文书
2015年仓库管理员工作总结
2015/04/21 职场文书
小学数学教师研修日志
2015/11/13 职场文书