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. C# 解析excel时,字段内有内容,却读取不到的解决方法

    C# 解析excel时,字段内有内容,却读取不到的解决方法:"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath + ...

  2. 腾讯的模板引擎---artTemplate

    主要方法如下5种,在此不详细说artTemplate的方法,主要记录三种使用artTemplate的方法. template(id, data) 根据 id 渲染模板.内部会根据document.ge ...

  3. MyBatis 与 Spring Data JPA 选择谁?

    MyBatis 与 Spring Data JPA 选择谁? https://www.v2ex.com/t/285081 jpa predicate优缺点 https://blog.csdn.net/ ...

  4. [转]G++与GCC的区别

    转自http://www.52pojie.cn/thread-58109-1-1.html 误区一:gcc只能编译c代码,g++只能编译c++代码两者都可以,但是请注意:1.后缀为.c的,gcc把它当 ...

  5. scylladb docker 运行试用

      scylladb 是兼容cassandra 的数据存储系统,从官方的性能报告,比原生的apache cassandra 有好多 的提高 使用docker 运行,具体的也可以参考官方文档,后边会提供 ...

  6. linux SSH各配置项解释

    Linux下SSH各配置项解释 关于ssh 设置的相关总结(ssh最大连接数.ssh连接时长.安全性配置等)以redhat6.3为例 ssh配置文件在: /etc/ssh/sshd_config可以打 ...

  7. oracle 无法启动图形界面,no protocol specified

    linux 终端启动图形化程序界面时报错:No protocol specified这是因为Xserver默认情况下不允许别的用户的图形程序的图形显示在当前屏幕上. 如果需要别的用户的图形显示在当前屏 ...

  8. 使用axis2的wsdl2java把wsdl生成java文件

    原文地址:http://blog.csdn.net/walkcode/article/details/7661674 有时在我们的开发中可能会有这种情况就是你要使用webservice但是对方没有给你 ...

  9. apache-cxf-2.6.3 spring集成配置

    apache-cxf-2.6.3 <?xml version="1.0" encoding="UTF-8"?><beans xmlns=&qu ...

  10. 【Spring学习笔记-MVC-13】Spring MVC之文件上传

    作者:ssslinppp       1. 摘要 Spring MVC为文件上传提供了最直接的支持,这种支持是通过即插即用的MultipartResolve实现的.Spring使用Jakarta Co ...