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共享引用(多个变量引用)示例代码
Dec 04 Python
Python中使用PIPE操作Linux管道
Feb 04 Python
Linux下使用python自动修改本机网关代码分享
May 21 Python
Python中Class类用法实例分析
Nov 12 Python
Python编程给numpy矩阵添加一列方法示例
Dec 04 Python
使用python生成杨辉三角形的示例代码
Aug 29 Python
python实现Flappy Bird源码
Dec 24 Python
Python3爬虫之urllib携带cookie爬取网页的方法
Dec 28 Python
对Django中static(静态)文件详解以及{% static %}标签的使用方法
Jul 28 Python
face++与python实现人脸识别签到(考勤)功能
Aug 28 Python
parser.add_argument中的action使用
Apr 20 Python
Python实现一个论文下载器的过程
Jan 18 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
PHP 出现乱码和Sessions验证问题的解决方法!
2008/12/06 PHP
非常精妙的PHP递归调用与静态变量使用
2012/12/16 PHP
php结合正则批量抓取网页中邮箱地址
2015/05/19 PHP
php ajax实现文件上传进度条
2016/03/29 PHP
Linux下源码包安装Swoole及基本使用操作图文详解
2019/04/02 PHP
PHP调用QQ互联接口实现QQ登录网站功能示例
2019/10/24 PHP
用js实现预览待上传的本地图片
2007/03/15 Javascript
页面只有一个text的时候,回车自动submit的解决方法
2010/08/12 Javascript
javascript 另一种图片滚动切换效果思路
2012/04/20 Javascript
javascript 正则表达式相关应介绍
2012/11/27 Javascript
如何用js 实现依赖注入的思想,后端框架思想搬到前端来
2015/08/03 Javascript
JS+CSS实现经典的左侧竖向滑动菜单效果
2015/09/23 Javascript
JS动态插入并立即执行回调函数的方法
2016/04/21 Javascript
微信小程序 navigation API实例详解
2016/10/02 Javascript
js按条件生成随机json:randomjson实现方法
2017/04/07 Javascript
浅谈在koa2中实现页面渲染的全局数据
2017/10/09 Javascript
小程序ios音频播放没声音问题的解决
2018/07/11 Javascript
JS实现方形抽奖效果
2018/08/27 Javascript
React Native开发封装Toast与加载Loading组件示例
2018/09/08 Javascript
vue.js实现的全选与全不选功能示例【基于elementui】
2018/12/03 Javascript
[19:59]2014DOTA2国际邀请赛 IG战队纪录片
2014/08/07 DOTA
[00:20]TI9不朽观赛名额抽取
2019/08/05 DOTA
TensorFlow利用saver保存和提取参数的实例
2018/07/26 Python
Python3内置模块之base64编解码方法详解
2019/07/13 Python
TensorFlow实现checkpoint文件转换为pb文件
2020/02/10 Python
关于python3.7安装matplotlib始终无法成功的问题的解决
2020/07/28 Python
英国领先的男装设计师服装独立零售商:Repertoire Fashion
2020/10/19 全球购物
教你打造完美的创业计划书
2014/01/06 职场文书
初中美术教学反思
2014/01/29 职场文书
党员自我评价2015
2015/03/03 职场文书
财务会计求职信范文
2015/03/20 职场文书
部门优秀员工推荐信
2015/03/24 职场文书
圆明园纪录片观后感
2015/06/03 职场文书
2016师德师风学习心得体会
2016/01/12 职场文书
导游词之秦始皇兵马俑博物馆
2019/09/29 职场文书
Mysql将字符串按照指定字符分割的正确方法
2022/05/30 MySQL