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实现的DES加密算法和3DES加密算法实例
Jun 03 Python
Python复数属性和方法运算操作示例
Jul 21 Python
使用 Python 实现微信群友统计器的思路详解
Sep 26 Python
Django 过滤器汇总及自定义过滤器使用详解
Jul 19 Python
python3 深浅copy对比详解
Aug 12 Python
利用Python代码实现一键抠背景功能
Dec 29 Python
python字符串替换re.sub()实例解析
Feb 09 Python
python手机号前7位归属地爬虫代码实例
Mar 31 Python
Django-imagekit的使用详解
Jul 06 Python
Python定时任务框架APScheduler原理及常用代码
Oct 05 Python
python绘图模块之利用turtle画图
Feb 12 Python
python基于turtle绘制几何图形
Jun 15 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根据日期判断星座的函数分享
2014/02/13 PHP
PHP中实现获取IP和地理位置类分享
2015/02/10 PHP
php查询mysql大量数据造成内存不足的解决方法
2015/03/04 PHP
总结的一些PHP开发中的tips(必看篇)
2017/03/24 PHP
PHP实现根据数组某个键值大小进行排序的方法
2018/03/13 PHP
laravel框架select2多选插件初始化默认选中项操作示例
2020/02/18 PHP
PHP 8新特性简介
2020/08/18 PHP
JavaScript高级程序设计(第3版)学习笔记4 js运算符和操作符
2012/10/11 Javascript
jquery网页元素拖拽插件效果及实现
2013/08/05 Javascript
jquery清空表单数据示例分享
2014/02/13 Javascript
js实现checkbox全选和反选示例
2014/05/01 Javascript
微信小程序 wx.request(接口调用方式)详解及实例
2016/11/23 Javascript
JS完成画圆圈的小球
2017/03/07 Javascript
vue中路由验证和相应拦截的使用详解
2017/12/13 Javascript
React实现全局组件的Toast轻提示效果
2018/09/21 Javascript
JavaScript实现的3D旋转魔方动画效果实例代码
2019/07/31 Javascript
vue双击事件2.0事件监听(点击-双击-鼠标事件)和事件修饰符操作
2020/07/27 Javascript
OpenLayers3实现对地图的基本操作
2020/09/28 Javascript
[42:20]Winstrike vs VGJ.S 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
python 生成目录树及显示文件大小的代码
2009/07/23 Python
python中cPickle用法例子分享
2014/01/03 Python
python网络编程之读取网站根目录实例
2014/09/30 Python
wxPython中listbox用法实例详解
2015/06/01 Python
Python破解BiliBili滑块验证码的思路详解(完美避开人机识别)
2020/02/17 Python
Python如何将函数值赋给变量
2020/04/28 Python
判断Threading.start新线程是否执行完毕的实例
2020/05/02 Python
Python selenium使用autoIT上传附件过程详解
2020/05/26 Python
浅谈cv2.imread()和keras.preprocessing中的image.load_img()区别
2020/06/12 Python
详解CSS3浏览器兼容
2016/12/14 HTML / CSS
英国森林假期:Forest Holidays
2021/01/01 全球购物
施工安全标语
2014/06/07 职场文书
2016年社区综治宣传月活动总结
2016/03/16 职场文书
社区结对共建协议书
2016/03/23 职场文书
私人贷款担保书该怎么写呢?
2019/07/02 职场文书
大学生奖学金获奖感言(范文)
2019/08/15 职场文书
导游词之无锡唐城
2019/12/12 职场文书