您的位置:首页 > 编程语言 > Go语言

django学习笔记之登录

2015-08-05 14:24 429 查看
在测试admin成功之后我开始写web的第一个功能,登录。顺序如下:

1.首先在url里面添加登录,我把登录的文件放在account.py下面,所以url写为:url(r'^accounts/login/$', 'sys_pm.account.userlogin',name='userlogin'),这里的name参数为此条url的别名,当你想引用这条url时候,只需要action={% url “userlogin” %}这样写就可以调用到相应的方法。

2.当定义好url之后,我开始实现userlogin的方法,此段代码大意就是当,代码如下:

def userlogin(request):

if request.method=="POST":

form =LoginForm(request=request,data=request.POST)

if form.is_valid():

return HttpResponseRedirect('/')

else:

return render_to_response('accounts/login.html',{

"form":form},context_instance=RequestContext(request))

else:

form =LoginForm()

if request.user.is_authenticated():

return HttpResponseRedirect('/')

return render_to_response('accounts/login.html',context_instance=RequestContext(request))

这里注释几点:

1)关于get和post方法简单说一下,get用于获取或查询信息,post一般用于更新资源,所以有动作的使用post,查询等的使用get。

2) LoginForm是django表单类里的一个表单,对于此表单类接下来会有讨论。

3)HttpResponseRedirect重定向到新的url。from django.http import HttpResponseRedirect 。

4)request.user.is_authenticated()这个参数是user类里验证登录的函数

3.下面看一下对应的表单,重写了如下几个函数,关于usernamefield和passwordfield是对现有类型的的一次封装,关于表单,这里说的比较详细http://www.douban.com/note/296298497/?type=like,细致需要看官方文档

class LoginForm(forms.Form):

username=UsernameField(required=True,max_length=50,min_length=6)

password=PasswordField(required=True,max_length=50,min_length=6)

def __init__(self,request=None,*args,**kwargs):

def clean(self):

def get_user_id(self):

def get_user(self):

4.对于现有类型的封装其实很简单,这里只是根据需求去显示一些提示信息和做了一些优化工作。validator是对有效性的控制,对于username的实现一起写在下面。

class UsernameField(CharField):

default_error_messages = {

'invalid':u'账号由字母数字下划线组成',

'required':u'账号由字母数字下划线组成',

}

default_validators = [username]

def clean(self,value):

value = self.to_python(value).strip()

return super(UsernameField, self).clean(value)

username_re = re.compile(r'^[\w]+?$')

username = RegexValidator(username_re,u"账号由字母数字下划线组成的字符串最少为6位",'invalid')
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: