django admin 默认已经存在了一个用户认证,这个时候可以偷个小懒,直接用 django 自带的,就不需要自己写用户认证了

1、目录结构:

2、代码

  • 在 settings.py 中添加一行

    # 如果不添加该行,则在未登录状态打开页面的时候验证是否登录的装饰器跳转到 /accounts/login/ 下面
    # 第一种解决方法就是修改 settings.py 中的 LOGIN_URL
    # 第二种解决方法是在 url 中匹配该 url
    LOGIN_URL = "/login/"
  • CRM/app01/models.py
    from django.db import models
    from django.contrib.auth.models import User class UserProfile(models.Model):
    """账户信息表"""
    user = models.OneToOneField(User) # 跟 django 的 User 表做一个一对一
    name = models.CharField(max_length=)
    roles = models.ManyToManyField("Role", blank=True, null=True)
  • CRM/CRM/urls.py
    from django.conf.urls import url, include
    from django.contrib import admin
    from CRM import views urlpatterns = [
    url(r'^crm/', include("app01.urls")),
    url(r'^login/', views.acc_login),
    url(r'^logout/', views.acc_logout), ]
  • CRM/CRM/views.py
    #!/usr/bin/env python
    # -*- coding: utf- -*-
    # Author:zhangcong
    # Email:zc_92@sina.com from django.contrib.auth import authenticate, login, logout
    from django.shortcuts import render
    from django.shortcuts import redirect def acc_login(request):
    """登录"""
    print(request.user)
    if request.method == "POST":
    username = request.POST.get("username")
    password = request.POST.get("password") user = authenticate(username=username, password=password) # 调用 django 的认证模块进行认证 if user: # 判断验证是否通过
    login(request, user) next_url = request.GET.get('next', None)
    if not next_url:
    next_url = '/crm/'
    return redirect(next_url) return render(request, 'login.html') def acc_logout(request):
    """登出"""
    logout(request) return redirect('/login/')
  • CRM/templates/login.html
    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
    <meta name="description" content="">
    <meta name="author" content="">
    <link rel="icon" href="http://v3.bootcss.com/favicon.ico"> <title>Signin Template for Bootstrap</title> <!-- Bootstrap core CSS -->
    <link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"> <!-- IE10 viewport hack for Surface/desktop Windows bug -->
    <link href="http://v3.bootcss.com/assets/css/ie10-viewport-bug-workaround.css" rel="stylesheet"> <!-- Custom styles for this template -->
    <link href="http://v3.bootcss.com/examples/signin/signin.css" rel="stylesheet">
    <style>
    .line{
    margin-top: 5px;
    }
    </style>
    </head> <body> <div class="container"> <form class="form-signin" method="POST">
    {% csrf_token %}
    <h2 class="form-signin-heading">Please sign in</h2>
    <div class="line">
    <label for="username" class="sr-only">UserName</label>
    <input type="text" id="username" class="form-control" name="username" placeholder="UserName" required autofocus>
    </div>
    <div class="line">
    <label for="inputPassword" class="sr-only">Password</label>
    <input type="password" id="inputPassword" class="form-control" name="password" placeholder="Password" required>
    </div> <button class="btn btn-lg btn-primary btn-block" type="submit">Sign in</button>
    </form> </div> <!-- /container -->
    </body>
    </html>
  • CRM/app01/urls.py  
    from django.conf.urls import url, include
    from app01 import views urlpatterns = [
    url(r'^$', views.dashboard),
    ]
  • CRM/app01/views
    from django.shortcuts import HttpResponse
    from django.contrib.auth.decorators import login_required @login_required # 验证是否登录
    def dashboard(request):
    print(request.user)
    return HttpResponse('login ok!')

基于 django 自带的用户认证进行用户认证的更多相关文章

  1. Django学习笔记(16)——扩展Django自带User模型,实现用户注册与登录

    一,项目题目:扩展Django自带User模型,实现用户注册与登录 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册,登录,用户认证,注销,修改密码等功能. ...

  2. (30)auth模块(django自带的用户认证模块)

    Auth模块是Django自带的用户认证模块: 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册.用户登录.用户认证.注销.修改密码等功能,这还真是个麻烦的 ...

  3. Django自带的用户认证auth模块

    一.介绍 基本上在任何网站上,都无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册.用户登录.用户认证.注销.修改密码等功能. 使用Django,我们可以不需要自己写这些功能,因为Dj ...

  4. Django自带的用户认证

    1. 创建超级用户   python manage.py createsuperuser   2. 认证  校验用户名和密码  obj = auth.authenticate(request,user ...

  5. django自带的用户认证和form表单功能

    一.用户认证 1.用户认证方法 1.ajango自带用户认证功能,只需要引入相应的模块就可以使用,但是前提是必须使用ajango自带的auth_user表,并且需要把用户相关信息存放在该表中. 2.引 ...

  6. 6月29日学习总结 Django自带的用户认证

    Django自带的用户认证 我们在开发一个网站的时候,无可避免的要设计.实现网站的用户系统.此时我们需要实现包括但不限于用户注册.用户登录.用户认证.注销.修改密码等功能,这还真是个麻烦的事情呢. D ...

  7. Django自带表User认证详解

    认证登陆(附方法实现代码,百度网盘拉取即可下载,激活码:gqt1) 在进行用户登陆验证的时候,如果是自己写代码,就必须要先查询数据库,看用户输入的用户名是否存在于数据库中: 如果用户存在于数据库中,然 ...

  8. csrf跨站请求伪造、csrf相关装饰器、auth认证模块、基于django中间件设计项目功能

    目录 csrf跨站请求网站 什么是csrf跨站请求网站 经典例子-钓鱼网站 模拟 如何避免这种现象(预防) 如何在django中解决这个问题 form表单 ajax csrf相关装饰器 FBV CBV ...

  9. Django 自带认证功能auth模块和User对象的基本操作

    一.auth模块 from django.contrib import auth django.contrib.auth中提供了许多方法,这里主要介绍其中的三个: authenticate()    ...

随机推荐

  1. 简谈WP,IOS,Android智能手机OS

    什么是智能手机? 相信到现在这个已经是傻瓜到不能再傻瓜的问题了 智能手机都不懂? 那你活着还有什么意思= = 但是为了谈论今天的三大主角:wp,ios,android 不得不回答一下这个笨笨的问题 如 ...

  2. CKEditor+SWFUpload实现功能较为强大的编辑器(一)---CKEditor配置

    CKEditor爆表的强大功能大家都有目共睹,号称最强大的在线编辑器,只要将文件复制到项目中,在添加引用,在一句代码就可以将普通的textarea变成华丽的编辑器 所谓一复制,一拖,一换就大功告成 但 ...

  3. Kubernetes - 配置Nginx-Ingress 作为服务发现

    添加 Kubernetes ConfigMap配置来自定义端口与服务的映射关系 配置文件, 有二个在默认空间下web服务和api服务分别映射到自定义端口 9001, 9002 apiVersion: ...

  4. 简易高重用的jdbcutils工具封装实现类以及简易连接池实现

    因为如今发现做个小项目都是导入n多的依赖包,非常烦琐,仅仅想快点开发完一个个的小需求项目,这个时候真心不想用框架,仅仅能自己写个jdbcutils,尽管网上有非常多有apache的,阿里的,可是感觉用 ...

  5. 网页计算器 && 简易网页时钟 && 倒计时时钟

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. SharedPreferences具体解释(一)——基础知识

    我们在开发软件的时候,常须要向用户提供软件參数设置功能,比如我们经常使用的微信,用户能够设置是否同意陌生人加入自己为好友.对于软件配置參数的保存,假设是在window下通常我们会採用ini文件进行保存 ...

  7. 深入解析alloc/retain/release/dealloc实现

    首先通过GNUstep上得源码来叙述各个函数的实现(GNUstep是Cocoa框架的互换框架,二者的行为和实现方式很相似) GNUstep源码中NSObject类的alloc方法: id = obj ...

  8. react-native 启动页(react-native-splash-screen)

    用于解决iOS和Android启动白屏问题及简单的启动页面展示 下载 react-native-splash-screen yarn add react-native-splash-screen re ...

  9. type=file文件上传H5新特性

    1.语法 <input name="myFile" type="file"> 2.属性(以下三个仅HTML5支持,因此存在兼容性问题) (1)mul ...

  10. PIVOT 和 UPIVOT 的使用(行转列)

    PIVOT 通过将表达式某一列中的唯一值转换为输出中的多个列来旋转表值表达式,并在必要时对最终输出中所需的任何其余列值执行聚合.UNPIVOT 与 PIVOT 执行相反的操作,将表值表达式的列转换为列 ...