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

yipeiwu_com6年前Python基础

利用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__()


相关文章

TensorFlow深度学习之卷积神经网络CNN

TensorFlow深度学习之卷积神经网络CNN

一、卷积神经网络的概述 卷积神经网络(ConvolutionalNeural Network,CNN)最初是为解决图像识别等问题设计的,CNN现在的应用已经不限于图像和视频,也可用于时间...

pycharm 将python文件打包为exe格式的方法

pycharm 将python文件打包为exe格式的方法

因为近期正在学习python,就需要将python文件打包为exe可执行文件,就将该过程记录下来。 首先我是通过Pyinstall打包的,具体安装及打包步骤如下 1.打开终端控制台 通过...

解决Python出现_warn_unsafe_extraction问题的方法

解决Python出现_warn_unsafe_extraction问题的方法

在Python项目中运行出现了“AttributeError: ResourceManager instance has no attribute ‘_warn_unsafe_extra...

python实现定时压缩指定文件夹发送邮件

工作中每天需要收集部门内的FR文件,发送给外部部门的同事帮忙上传,这么发了有大半年,昨天亮光一闪,为什么不做成自动化呢,于是用python实现了整个流程,今天体验了一下真是美滋滋。 代码...

pthon贪吃蛇游戏详细代码

pthon贪吃蛇游戏详细代码

本文实例为大家分享了pthon贪吃蛇游戏的具体代码,供大家参考,具体内容如下 在写Python游戏项目时,最重要的时python中的pygame库。安装pygame库和用法在我CSDN...