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端配置单点登出 单点登出功能跟单点登录功能是 ...
随机推荐
- 批量分割视频opencv
前言 视频处理过程中,会用到对等长的视频进行处理,此时要对大视频进行分割. 实现步骤 1.批量读取视频集: 2.视频分割: 测试代码 1.批量读取视频集: /********************* ...
- VS2015 Release 生成调试信息
- C/C++ > 常规 > 调试信息格式 - C/C++ > 优化 > 优化 > 禁止(/Od) - 链接器 > 调试 > 生成调试信息 > 是 (/ ...
- android中的5大布局
1.线性布局:LinearLayout layout_margin 上下左右的距离分别为 下面图中的orientation表示的是布局中的方向 分别有horizontal表示水平 vertic ...
- 不要使用 Dispatcher.Invoke,因为它可能在你的延迟初始化 Lazy 中导致死锁
WPF 中为了 UI 的跨线程访问,提供了 Dispatcher 线程模型.其 Invoke 方法,无论在哪个线程调用,都可以让传入的方法回到 UI 线程. 然而,如果你在 Lazy 上下文中使用了 ...
- 线程池、及使用场景、线程安全封装、ConcurrentHashMap应用场景
https://blog.csdn.net/sinbadfreedom/article/details/80467253 :1.HashMap与ConcurrentHashMap的区别与应用场景 h ...
- java安全性-引用-分层-解耦
Java不支持指针, 一切对内存的访问都必须通过对象的实例变量来实现,这样就防止程序员使用 "特洛伊"木马等欺骗手段访问对象的私有成员 访问一个对象必须通过这个对象的引用 java ...
- oracle 、sql server 、mysql 复制表数据
我们知道在oracle 中复制表数据的方式是使用 create table table_name as select * from table_name 而在sql server 中是不能这么使用的 ...
- kettle的输入输出组件和脚本组件
一. 输入组件 1.1表输入 从指定的数据库中,通过sql语句来查询数据加载到内存. 允许简易转换:勾选后可以避免不必要的字段的数据类型转换,从而提高性能. 替换sql语句里的变量:勾选后可以通过${ ...
- kettle的资源库
在kettle中的转换或者作业等资源的存储的仓库称为资源库:分为文件资源库.数据库资源库. 一个转换或者作业可以属于某个资源库或者一个单独的文件形态存在. 一.数据库资源库 1.1在mysql中创建一 ...
- tyvj1659中中救援队
题目:http://www.joyoi.cn/problem/tyvj-1659 发现每条边要走两次,每个点要走它连接的边数次. 所以把边的权值赋成 本身的值+两个端点的点权,求最小生成树即可. !边 ...