django-auth组件的注册,登录,登出,及验证是否已经登入。使用login的属性
1.注册:
1.创建User(django自带的用户model)的form对象
定义form验证返回的错误提示信息
error_msg = {
'username': {'required': '用户名不能为空', 'max_length': '最大20','min_length': '至少6'},
'password': {'required': '用户名密码不能为空', 'max_length': '最大20','min_length': '至少6'},
}
django,auth组件自带的用户model User 拥有username和password两个字段
from django.contrib.auth.models import User
class AuthRegisterForm(forms.Form):
username = forms.CharField(label='用户名', min_length=6, max_length=20, required=True, error_messages=error_msg['username'])
password = forms.CharField(label='密码', min_length=6, max_length=20, required=True, error_messages=error_msg['password']) def clean_username(self):
username = self.cleaned_data["username"]
users = User.objects.filter(username=username)
print username
print 'qeqwe'
if users:
raise forms.ValidationError("用户名已经存在")
return username
2.view视图
def post(self, request):
forms = AuthRegisterForm(request.POST, request.FILES)
print forms.errors
if forms.is_valid():
user = User.objects.create_user(**forms.clean()) # 使用的不是普通的create。 修改密码:set_password 都是自动加密 sha2
user.set_password('newpassword')
return HttpResponse('welcome haha...')
return render(request, 'register.html', locals())
2.登录:
class AuthLogin(View):
""" 通过auth登录 """
def get(self, request):
return render(request, 'login11.html') def post(self, request):
username = request.POST.get("username")
password = request.POST.get("password")
print request.user
# 使用auth组件的authenticate验证登录,成功返回一个用户
user = authenticate(username=username, password=password)
if user:
# 这个就是使用auth组件的登录]
if user.is_active: # 判断用户是否被激活
login(request, user)
# 如果调用login方法以后,
# request对象就会激活user属性,这个属性不管登录或者未登录都是存在
print request.user
return HttpResponse("ok")
else:
message = "用户不存在"
return render(request, 'login11.html', locals())
else:
message = u"用户或密码出错"
print message
return render(request, 'login11.html', locals())
3.注销:
html
<a href="{% url 'work_include:auth_logout' %}">注销</a>
view
class LoginOut(View):
""" 登出 """
def get(self, request):
logout(request) # 会清除 cookie,seesion
return HttpResponse("注销成功")
4.验证其他页面是否登陆
class OtherPageAuth(LoginRequiredMixin, View):
"""
用户是否已经验证
from django.contrib.auth.mixins import LoginRequiredMixin
指定局部的跳转url: login_url = "/work/auth_login"
全局: settings中 LOGIN_URL = '/work/auth_login'
"""
login_url = "/work/auth_login" # 没登录跳转到登陆界面,登录则正常执行
def get(self, request):
print request.user
return render(request, 'logok.html', locals())
ps: 使用login方法登录,会激活request的user属性,
激活前request.user为AnonymousUser
激活后request.user为 username,具有多个子属性
'''
request.user.username # 用户名
request.user.email #邮箱
request.user.groups #多对多的组
request.user.user_permissions # 多对多的用户权限
request.user.is_staff # 是否是admin的管理员
request.user.is_active # 是否激活,判断该用户是否可用
request.user.is_superuser #是否是超级用户
request.user.last_login # 上次登录时间
request.user.is_authenticated # 是否验证通过
request.user.is_anonymous # 是否是匿名用户
request.user.set_password # 设置密码,传入原生密码
request.user.check_password # 检查密码
request.user.has_perm #判断用户是否拥有某个权限
request.user.has_perms([perms,]) # 判断用户是否有权限列表中的某个权限
'''
比如判断是否通过验证,通过验证就不再显示登陆注册的样式了
{% if not user.is_authenticated %}
<a href="{% url 'auth:login' %}">登录</a><span> /</span>
<a href="{% url 'auth:register' %}">注册</a>
{% else %}
<a href="#" class="">{{ user.username }}</a>
{% endif %}
django-auth组件的注册,登录,登出,及验证是否已经登入。使用login的属性的更多相关文章
- Django Auth组件->扩展用户
Auth用户 1.声明用户表 djangauth/settings.py..............................AUTH_USER_MODEL = 'app01.UserInfo' ...
- Django auth组件拓展 关联外部信息---------------------------- Profile 模式
https://docs.djangoproject.com/en/2.1/topics/auth/customizing/ 官方文档. 网上的get_profile 方法不好用太假了 可能我没用明白 ...
- CAS学习笔记五:SpringBoot自动/手动配置方式集成CAS单点登出
本文目标 基于SpringBoot + Maven 分别使用自动配置与手动配置过滤器方式实现CAS客户端登出及单点登出. 本文基于<CAS学习笔记三:SpringBoot自动/手动配置方式集成C ...
- Android网络开发实例(基于抓包实现的网络模拟登录,登出和强制登出)
学习Android有几个月了,最近喜欢上了网络编程,于是想通过Android写一些一个小程序用于连接外网.在这里非常感谢雪夜圣诞的支持,非常感谢,给我打开新的一扇门. 1.声明,本程序只能用于西南大学 ...
- python相关注册登录方式
1.使用django自带功能实现登录/退出登录 使用django自带登录功能,前提生成用户(用户注册)使用的是django自带的user,或称models中用户表继承于django自带的user 1. ...
- .net core Identity集成IdentityServer(3) 一键登出
在客户端程序, 我们补充一键登出操作. 使用了idsv之后, 退出的操作需要删除本地cookie, 然后去请求认证服务器, 也删除认证服务器的cookie. 官网给的退出的代码 public asyn ...
- CAS单点登出的原理
单点登出功能跟单点登录功能是相对应的,旨在通过Cas Server的登出使所有的Cas Client都登出. Cas Server的登出是通过请求“/logout”发生的,即如果你的Cas Serve ...
- 从零搭建一个IdentityServer——会话管理与登出
在上一篇文章中我们介绍了单页应用是如何使用IdentityServer完成身份验证的,并且在讲到静默登录以及会话监听的时候都提到会话(Session)这一概念,会话指的是用户与系统之间交互过程,反过来 ...
- Cas(08)——单点登出
单点登出 目录 1.1 Cas Client端配置单点登出 1.2 Cas Server端禁用单点登出 1.1 Cas Client端配置单点登出 单点登出功能跟单点登录功能是 ...
随机推荐
- vue 钩子
生命周期总结 这么多钩子函数,我们怎么用呢,我想大家可能有这样的疑问吧,我也有,哈哈哈. beforecreate : 举个栗子:可以在这加个loading事件 created :在这结束loadin ...
- java设计模——反射的应用 (利用反射来去除if判断语句)
利用反射来去除if判断语句 我的以前写的一个查分系统,就是部长让我写的那个,使用一个分发器(函数),他会根据传递进来的字符串参数调用不同的方. If(“add”.equalsIgnoreCase(fu ...
- CTF密码学之凯撒加密
在加密的各种算法中,凯撒加密是最简单的也是最常见的一种加密方法,它的中心思想是替换,ROT加密其实就是凯斯加密的变种. 即明文的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文 ...
- long long 与 int
- C语言屏幕打印,再删除打印的内容
在做项目的时候,用到了命令行模式进行监听数据,并且是多线程的.因为程序大部分时间都只是在监听状态,容易给人假死的信息.所以单独使用一个进行在屏幕上打印省略号(.......),然后再把打印的省略号(. ...
- js 逻辑的短路运算
&& 与运算 同时为true,才为true: 表达式1为false,不用看表达式2: || 或运算 有一个为true,就为true: 表达式1为true,不用看表达式2: && ...
- Cropperjs 插件知识点
cropper.js 通过 canvas 实现图片裁剪,最后再通过 canvas 获取裁剪区域的图片base64串. 1. Container 容器 2. canvas 图片 3. crop 裁剪框
- 一个经典的PHP加密解密算法
项目中有时我们需要使用PHP将特定的信息进行加密,也就是通过加密算法生成一个加密字符串,这个加密后的字符串可以通过解密算法进行解密,便于程序对解密后的信息进行处理.最常见的应用在用户登录以及一些API ...
- MapReduce-线性回归
线性回归有是三个值很重要: 1. 斜率 2. 截距:x和y轴的交点值: 3. 显著性:数据偏离线性的程度,用以判断数据可以用线性表示的程度:拟合度 apache.commons.math3里面有一 ...
- TP5 首页导航一级和二级分类
<ul id="jsddm"> <li><a class="navi_home" href="{:url('/index ...