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的属性的更多相关文章

  1. Django Auth组件->扩展用户

    Auth用户 1.声明用户表 djangauth/settings.py..............................AUTH_USER_MODEL = 'app01.UserInfo' ...

  2. Django auth组件拓展 关联外部信息---------------------------- Profile 模式

    https://docs.djangoproject.com/en/2.1/topics/auth/customizing/ 官方文档. 网上的get_profile 方法不好用太假了 可能我没用明白 ...

  3. CAS学习笔记五:SpringBoot自动/手动配置方式集成CAS单点登出

    本文目标 基于SpringBoot + Maven 分别使用自动配置与手动配置过滤器方式实现CAS客户端登出及单点登出. 本文基于<CAS学习笔记三:SpringBoot自动/手动配置方式集成C ...

  4. Android网络开发实例(基于抓包实现的网络模拟登录,登出和强制登出)

    学习Android有几个月了,最近喜欢上了网络编程,于是想通过Android写一些一个小程序用于连接外网.在这里非常感谢雪夜圣诞的支持,非常感谢,给我打开新的一扇门. 1.声明,本程序只能用于西南大学 ...

  5. python相关注册登录方式

    1.使用django自带功能实现登录/退出登录 使用django自带登录功能,前提生成用户(用户注册)使用的是django自带的user,或称models中用户表继承于django自带的user 1. ...

  6. .net core Identity集成IdentityServer(3) 一键登出

    在客户端程序, 我们补充一键登出操作. 使用了idsv之后, 退出的操作需要删除本地cookie, 然后去请求认证服务器, 也删除认证服务器的cookie. 官网给的退出的代码 public asyn ...

  7. CAS单点登出的原理

    单点登出功能跟单点登录功能是相对应的,旨在通过Cas Server的登出使所有的Cas Client都登出. Cas Server的登出是通过请求“/logout”发生的,即如果你的Cas Serve ...

  8. 从零搭建一个IdentityServer——会话管理与登出

    在上一篇文章中我们介绍了单页应用是如何使用IdentityServer完成身份验证的,并且在讲到静默登录以及会话监听的时候都提到会话(Session)这一概念,会话指的是用户与系统之间交互过程,反过来 ...

  9. Cas(08)——单点登出

    单点登出 目录 1.1     Cas Client端配置单点登出 1.2     Cas Server端禁用单点登出 1.1     Cas Client端配置单点登出 单点登出功能跟单点登录功能是 ...

随机推荐

  1. GPA

    原题: GPA Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  2. BZOJ3551: [ONTAK2010]Peaks加强版【Kruskal重构树】【主席树】

    重要的事情说三遍 不保证图联通 不保证图联通 不保证图联通 那些和我一样认为重构树是点数的童鞋是要GG Description [题目描述]同3545 Input 第一行三个数N,M,Q. 第二行N个 ...

  3. S5PV210 移植无线wifi网卡 MT7601

    一.准备工作 1.MT7601驱动下载 点击下载 2.插入usb WiFi 启动开发板linux,lsusb查看usb驱动 Bus 001 Device 003: ID 148f:7601看到的是该驱 ...

  4. [CLPR] 卷积还是相关? - Opencv之filter2D探究

    I am doing something about convolving images in Python and for sake of speed I chose opencv 2.4.9. O ...

  5. Hadoop之 MapReducer工作过程

    1. 从输入到输出 一个MapReducer作业经过了input,map,combine,reduce,output五个阶段,其中combine阶段并不一定发生,map输出的中间结果被分到reduce ...

  6. spring4 知识点

    1 bean的 创建 1,直接在配置文件里面写一个带有@Bean注解的方法(返回值就是那个bena对象),(name等于 方法名) 2,使用 FactoryBean 接口(三个方法分别是创建,类型,单 ...

  7. 【linux】crontab命令

    一.crond简介 crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动cro ...

  8. 性能计数器监控typeperf

    获取性能计数器名称列表: typeperf -qx 监控: typeperf.exe "\JetByte TCP Stats Perf Counters Service\IPv4: ESTA ...

  9. ncnn编译安装-20190415

    ncnn编译安装 1.git clone https://github.com/Tencent/ncnn 2.按照wiki说明来编译,根据需要,选择不同的编译方式.在ncnn/CMakeLists.t ...

  10. C# 5.0中引入了async 和 await

    C# 5.0中引入了async 和 await.这两个关键字可以让你更方便的写出异步代码. 看个例子: public class MyClass { public MyClass() { Displa ...