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')
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')
相关文章推荐
- Gomoku
- Algorithms—162.Find Peak Element
- 【二分+计算几何】hdu 4033 Regular Polygon
- 初识django
- django1.8 view(3): View functions
- 一个好用的vim+go开发环境
- 英文操作系统中,CMD显示中文乱码问题;让Google chrome正常显示中文
- django migrations使用
- django1.8 view(2):URLconf part2
- CF 560 Gerald's Hexagon
- Algorithms—166.Fraction to Recurring Decimal
- VIEWGOOD(远古)中小学图书馆用户教育探究
- CF_148D_BagOfMice
- uwsgi启动并与django关联
- Qualcomm 如何修改lk 开机logo
- CodeForces 560C Gerald's Hexagon
- [笔记]遗传算法 genetic algorithm
- 【转】终极 Web 应用性能和压力测试工具 Gor
- 安装VNC(使用gonme桌面环境)
- django1.8 view(1):URLconf part1