Django auth登录

原创 2013年12月02日 07:09:39
  1. 注册action里,除了现实注册功能外,紧接着还进行了登录功能。
  2. _login(request,username,password)是我们写的可重用方法,因为在login里会用得到,所以我们抽象出来了,其中里面实现的东西,大多是应用auth模块的内置函数。代码:
  3. def _login(request,username,password):
  4.     '''登陆核心方法'''
  5.     ret=False
  6.     user=authenticate(username=username,password=password)
  7.     if user:
  8.         if user.is_active:
  9.             auth_login(request,user)
  10.             ret=True
  11.         else:
  12.             messages.add_message(request, messages.INFO, _(u'用户没有激活'))
  13.     else:
  14.         messages.add_message(request, messages.INFO, _(u'用户不存在'))
  15.     return ret

  16. 其中authenticate和auth_login事关键的函数,需要在auth模块里import出来:
  17. from django.contrib.auth import authenticate, login as auth_login ,logout as auth_logout
  18. auth_login是我们起的一个别名,原名是login,我们起别名是防止命名冲突,再者更好理解点。authenticate顾名思义,是通过昵称和密码 验证该用户,返回一个User实体;login内部进行不少的操作(初始化必要的request字段),但我们暂且不用关心这些,我们只需知道传一个用户实体,它会帮我们做好登录操作即可。
  19. _login(request,username,password)抽象出来,我们接下来做登录视图的时候,用到它。代码如下:
  20. def login(request):
  21.     '''登陆视图'''
  22.     template_var={}
  23.     form = LoginForm()    
  24.     if request.method == 'POST':
  25.         form=LoginForm(request.POST.copy())
  26.         if form.is_valid():
  27.             _login(request,form.cleaned_data["username"],form.cleaned_data["password"])
  28.             return HttpResponseRedirect(reverse("index"))
  29.     template_var["form"]=form        
  30.     return render_to_response("accounts/login.html",template_var,\
  31.                                    context_instance=RequestContext(request))
  32. 这个视图流程和注册流程相似,首先初始化未绑定的相应的表单,当点击登录按钮的时候,views会验证输入的数据是否合格,合格后才做相应的操作,也就是登录操作,我们上面已经写好了登录的方法_login,直接引用即可。
  33. 其中LoginForm 是登录的form,这是我们在写views时预先做好的,仅仅两个字段:昵称和密码:
  34. class LoginForm(forms.Form):
  35.     username=forms.CharField(label=_(u"昵称"),max_length=30,widget=forms.TextInput(attrs={'size': 20,}))
  36.     password=forms.CharField(label=_(u"密码"),max_length=30,widget=forms.PasswordInput(attrs={'size': 20,}))

  37. 这个比注册的form简单些,没有做手动的验证,只是生成表单用。

  38. 这样登录功能就算完成了。
版权声明:csdn只作为备份地,欢迎访问zoues.com

相关文章推荐

django_openstack_auth源码分析与集成

前言最近做一个比较简单的WEB应用,展示一些openstack简单的内容,认证总是要集成的,看了下django_openstack_auth组件,它本身是可以作为django应用的认证后端的,于是打算...

django 自定义auth的中间件的验证

今天在做django的用户验证这块的功能,想用django自带的auth的验证等现有的方法。从网上查到,auth的使用,详见:http://my.oschina.net/u/569730/blog/3...

Django auth注册

我们把一个字典变量template_var传递给模板welcome.html,默认欢迎辞为:欢迎您游客! 如果用户登录了,把用户名加上,request.user.is_authenticated()是...

django.contirb.auth-认证

摘要 django自带了一个认证模块,它利用middlerware在request里增加了user属性,用来获取认证用户的信息。认证后台采用session存储。它自带的User模型,也可以支持自定义扩...

验证django 用户认证auth模块常见方法使用.

更多0   在用 django 改造某些旧系统的时候,由于原来的用户设计不可能按照django  的 auth 模块的用户表那样设计的,当然你可以硬扩展成那样,但必须保证不影响别的系统,所以在...

Django Auth注册

建立level_1项目:django-admin.py startproject level_1新建Accounts App: cd level_1manage.py startapp account...

几个重要平台的auth2登录验证

QQ 后台方式的登录验证 http://wiki.opensns.qq.com/wiki/%E3%80%90QQ%E7%99%BB%E5%BD%95%E3%80%91%E4%BD%BF%E7%9...
  • aegoose
  • aegoose
  • 2013年02月27日 09:46
  • 14651

Laravel 5.1 集成 Auth 验证用户注册登录示例

Laravel 5 集成了 Auth 功能,并且包含了一个注册登录功能,通过这个集成,可以轻松实现用户用户注册登录,下文作为一个简易 Demo 示例如何使用。 参考:Database Setup La...
  • maxsky
  • maxsky
  • 2017年01月08日 00:40
  • 993

安卓之使用BASIC AUTH进行登录验证

public String Get(String netUrl,String usr,String psw){ URL url = new URL(netUrl); Username...

Laravel- Auth登录验证

-- 文章仅供个人学习参考,如有不恰当的地方,希望前辈们指教。-- 1、修改config\auth.php配置文件 'model' => App\Model\Users::class, 'table...
  • iong_l
  • iong_l
  • 2017年04月06日 16:26
  • 2331
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Django auth登录
举报原因:
原因补充:

(最多只允许输入30个字)