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发送邮件的实例代码(支持html、图片、附件)
Mar 04 Python
python使用webbrowser浏览指定url的方法
Apr 04 Python
Python 实现数据库(SQL)更新脚本的生成方法
Jul 09 Python
使用python和Django完成博客数据库的迁移方法
Jan 05 Python
单链表反转python实现代码示例
Feb 08 Python
tensorflow学习笔记之mnist的卷积神经网络实例
Apr 15 Python
更新修改后的Python模块方法
Mar 03 Python
解决Django一个表单对应多个按钮的问题
Jul 18 Python
Keras框架中的epoch、bacth、batch size、iteration使用介绍
Jun 10 Python
python类共享变量操作
Sep 03 Python
Python导入父文件夹中模块并读取当前文件夹内的资源
Nov 19 Python
只需要100行Python代码就可以实现的贪吃蛇小游戏
May 27 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输出日历表代码实例
2015/03/27 PHP
Symfony的安装和配置方法
2016/03/17 PHP
php简单备份与还原MySql的方法
2016/05/09 PHP
smarty模板数学运算示例
2016/12/11 PHP
PHP实现批量删除(封装)
2017/04/28 PHP
LaravelS通过Swoole加速Laravel/Lumen详解
2018/03/02 PHP
laravel框架模板之公共模板、继承、包含实现方法分析
2019/08/30 PHP
List Information About the Binary Files Used by an Application
2007/06/18 Javascript
Javascript模块模式分析
2008/05/16 Javascript
深入理解JavaScript系列(6):S.O.L.I.D五大原则之单一职责SRP
2012/01/15 Javascript
关于JavaScript中name的意义冲突示例介绍
2014/05/29 Javascript
js实现延时加载Flash的方法
2015/11/26 Javascript
使用jQuery5分钟快速搞定双色表格的简单实例
2016/08/08 Javascript
浅谈jquery选择器 :first与:first-child的区别
2016/11/20 Javascript
JavaScript结合HTML DOM实现联动菜单
2017/04/05 Javascript
react-native fetch的具体使用方法
2017/11/01 Javascript
Vue2.0实现组件之间数据交互和通信操作示例
2019/05/16 Javascript
JS设置自定义快捷键并实现图片上下左右移动
2019/10/17 Javascript
JavaScript 常见的继承方式汇总
2020/09/17 Javascript
[54:30]Liquid vs Newbee 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
python2.7删除文件夹和删除文件代码实例
2013/12/18 Python
Python 限定函数参数的类型及默认值方式
2019/12/24 Python
tensorflow实现对张量数据的切片操作方式
2020/01/19 Python
Python Tkinter Entry和Text的添加与使用详解
2020/03/04 Python
python实现坦克大战
2020/04/24 Python
keras 简单 lstm实例(基于one-hot编码)
2020/07/02 Python
Python3爬虫里关于识别微博宫格验证码的知识点详解
2020/07/30 Python
房屋转让协议书
2014/04/11 职场文书
管理岗位竞聘演讲稿
2014/08/18 职场文书
作风整顿剖析材料
2014/09/30 职场文书
教师作风整改措施思想汇报
2014/10/12 职场文书
爱心捐款感谢信
2015/01/20 职场文书
2016暑期师德培训心得体会
2016/01/09 职场文书
导游词之白茶谷九龙峡
2019/10/23 职场文书
用Python实现一个打字速度测试工具来测试你的手速
2021/05/28 Python
什么是css原子化,有什么用?
2022/04/24 HTML / CSS