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中关于字符串对象的一些基础知识
Apr 08 Python
Django后台获取前端post上传的文件方法
May 28 Python
python 分离文件名和路径以及分离文件名和后缀的方法
Oct 21 Python
python re正则匹配网页中图片url地址的方法
Dec 20 Python
python 将字符串完成特定的向右移动方法
Jun 11 Python
Django命名URL和反向解析URL实现解析
Aug 09 Python
Python 使用threading+Queue实现线程池示例
Dec 21 Python
在win64上使用bypy进行百度网盘文件上传功能
Jan 02 Python
tensorflow-gpu安装的常见问题及解决方案
Jan 20 Python
区分python中的进程与线程
Aug 13 Python
python实现AdaBoost算法的示例
Oct 03 Python
python中的测试框架
Nov 13 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+dbfile开发小型留言本
2006/10/09 PHP
hadoop中一些常用的命令介绍
2013/06/19 PHP
PHP调用wsdl文件类型的接口代码分享
2014/11/19 PHP
学习php设计模式 php实现单例模式(singleton)
2015/12/07 PHP
php实现产品加入购物车功能(1)
2020/07/23 PHP
TP5(thinkPHP5框架)基于bootstrap实现的单图上传插件用法示例
2019/05/29 PHP
js导入导出excel(实例代码)
2013/11/25 Javascript
jQuery实现仿腾讯迷你首页选项卡效果代码
2015/09/17 Javascript
JS多物体实现缓冲运动效果示例
2016/12/20 Javascript
JS定时器用法分析【时钟与菜单中的应用】
2016/12/21 Javascript
Ajax基础知识详解
2017/02/17 Javascript
浅谈webpack对样式的处理
2018/01/05 Javascript
Javascript删除数组里的某个元素
2019/02/28 Javascript
mpvue微信小程序开发之实现一个弹幕评论
2019/11/24 Javascript
ES11新增的这9个新特性,你都掌握了吗
2020/10/15 Javascript
Webpack3+React16代码分割的实现
2021/03/03 Javascript
[51:39]DOTA2-DPC中国联赛 正赛 Magma vs LBZS BO3 第二场 2月7日
2021/03/11 DOTA
Python中函数的用法实例教程
2014/09/08 Python
详解Python网络爬虫功能的基本写法
2016/01/28 Python
python实现简单http服务器功能
2018/09/17 Python
如何用Python制作微信好友个性签名词云图
2019/06/28 Python
python-opencv获取二值图像轮廓及中心点坐标的代码
2019/08/27 Python
Series和DataFrame使用简单入门
2019/11/13 Python
Django重设Admin密码过程解析
2020/02/10 Python
Python数据可视化图实现过程详解
2020/06/12 Python
python 实现一个图形界面的汇率计算器
2020/11/09 Python
详解python中的异常和文件读写
2021/01/03 Python
python实现简单的学生管理系统
2021/02/22 Python
syb养殖创业计划书
2014/01/09 职场文书
建筑个人求职信范文
2014/01/25 职场文书
《太阳》教学反思
2014/02/21 职场文书
在职证明书范本(2014新版)
2014/09/25 职场文书
学生旷课检讨书500字
2014/10/28 职场文书
办公室规章制度范本
2015/08/04 职场文书
mysql批量新增和存储的方法实例
2021/04/07 MySQL
MySQL磁盘碎片整理实例演示
2022/04/03 MySQL