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端配置单点登出 单点登出功能跟单点登录功能是 ...
随机推荐
- GPA
原题: GPA Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- BZOJ3551: [ONTAK2010]Peaks加强版【Kruskal重构树】【主席树】
重要的事情说三遍 不保证图联通 不保证图联通 不保证图联通 那些和我一样认为重构树是点数的童鞋是要GG Description [题目描述]同3545 Input 第一行三个数N,M,Q. 第二行N个 ...
- S5PV210 移植无线wifi网卡 MT7601
一.准备工作 1.MT7601驱动下载 点击下载 2.插入usb WiFi 启动开发板linux,lsusb查看usb驱动 Bus 001 Device 003: ID 148f:7601看到的是该驱 ...
- [CLPR] 卷积还是相关? - Opencv之filter2D探究
I am doing something about convolving images in Python and for sake of speed I chose opencv 2.4.9. O ...
- Hadoop之 MapReducer工作过程
1. 从输入到输出 一个MapReducer作业经过了input,map,combine,reduce,output五个阶段,其中combine阶段并不一定发生,map输出的中间结果被分到reduce ...
- spring4 知识点
1 bean的 创建 1,直接在配置文件里面写一个带有@Bean注解的方法(返回值就是那个bena对象),(name等于 方法名) 2,使用 FactoryBean 接口(三个方法分别是创建,类型,单 ...
- 【linux】crontab命令
一.crond简介 crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动cro ...
- 性能计数器监控typeperf
获取性能计数器名称列表: typeperf -qx 监控: typeperf.exe "\JetByte TCP Stats Perf Counters Service\IPv4: ESTA ...
- ncnn编译安装-20190415
ncnn编译安装 1.git clone https://github.com/Tencent/ncnn 2.按照wiki说明来编译,根据需要,选择不同的编译方式.在ncnn/CMakeLists.t ...
- C# 5.0中引入了async 和 await
C# 5.0中引入了async 和 await.这两个关键字可以让你更方便的写出异步代码. 看个例子: public class MyClass { public MyClass() { Displa ...