一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - Python的Django中django-userena組件的簡單使用教程

Python的Django中django-userena組件的簡單使用教程

2020-07-10 17:39Python教程網 Python

這篇文章主要介紹了Python的Django中django-userena組件的簡單使用教程,包括用戶登陸和注冊等簡單功能的實現,需要的朋友可以參考下

利用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。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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修改認證規則即可取消該限制。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
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__()

 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产精品久久国产精品99 | 韩国久久 | 乳环贵妇堕落开发调教番号 | 亚洲精品久久麻豆蜜桃 | 男女肉粗暴进来下面好紧 | 亚洲午夜久久久久久91 | 欧美一区二区三区gg高清影视 | 日韩免费一区 | 无人知晓小说姜璟免费阅读 | 天海翼三级 | 欧美成a人片免费看久久 | chinesespanking调教| 调教催眠改造np总攻 | 色综合久久六月婷婷中文字幕 | 久久精品久久久久 | 亚洲日本在线观看网址 | ck7788免费视频 | 娇妻被老外疯狂调教 | 女人张开腿 让男人桶个爽 免费观看 | 新版孕妇bbwbbwbbw | 亚洲大尺码 | 91夜色视频| chinese国产打屁股 | 欧美一级高清片免费一级 | 欧美日韩国产一区二区三区在线观看 | 九九九精品视频 | 亚洲国产欧美目韩成人综合 | 欧美在线视频 一区二区 | 国产日韩欧美在线观看不卡 | girlfriend动漫在线播放 | 亚洲国产中文字幕在线视频综合 | 国产精品 色 | 亚洲一卡2卡4卡5卡6卡残暴在线 | 国产一卡2卡3卡四卡精品网站 | 国产v在线在线观看羞羞答答 | 美女和男人一起差差 | 911精品国产亚洲日本美国韩国 | 免费视频一区二区 | 晓雪老师我要进你里面好爽 | ipx-177绝对领域在线观看 | 顶级欧美做受xxx000 |