Django auth登录

  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. 这样登录功能就算完成了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Django authDjango 中提供的一个内置应用,用于处理用户认证和授权问题。它提供了一套基本的用户认证和授权系统,包含用户注册、登录、注销、密码重置等功能,同时也支持对用户进行权限管理。 下面是 Django auth 中常用的一些组件和 API: 1. User:Django 内置的用户模型,包含用户名、密码、邮箱等字段。可以通过 `from django.contrib.auth.models import User` 导入。 2. AuthenticationForm:Django 内置的登录表单,继承自 forms.Form。可以通过 `from django.contrib.auth.forms import AuthenticationForm` 导入。 3. login():Django 内置的登录函数,用于验证用户身份并将用户信息保存到 session 中。可以通过 `from django.contrib.auth import login` 导入。 4. logout():Django 内置的注销函数,用于清除 session 中保存的用户信息。可以通过 `from django.contrib.auth import logout` 导入。 5. login_required():Django 内置的装饰器,用于限制某些视图只能在登录状态下访问。可以通过 `from django.contrib.auth.decorators import login_required` 导入。 6. PermissionRequiredMixin:Django 内置的权限验证 mixin,用于限制某些视图只能被具有特定权限的用户访问。可以通过 `from django.contrib.auth.mixins import PermissionRequiredMixin` 导入。 7. Permission:Django 内置的权限模型,用于定义用户的权限。可以通过 `from django.contrib.auth.models import Permission` 导入。 以上是 Django auth 的一些常用组件和 API,可以在 Django 官方文档中查阅更详细的内容和使用方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值