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!')

最新文章

  1. python基础之day2
  2. 浅谈Margin和Padding值设置成百分数的布局
  3. tomcat配置https
  4. scrollWidth的巧妙运用
  5. winform(无边框窗体与timer)
  6. Oracle创建自增字段方法-ORACLE SEQUENCE的简单介绍
  7. PI数据库的使用-PI System Management Tools
  8. mysql下用户和密码生成管理
  9. POJ- Find a multiple -(抽屉原理)
  10. ServiceStack 简单服务搭建
  11. 【原】Java学习笔记009 - 阶段测试
  12. asp+SqlServer2008开发【第一集:安装SqlServer2008以及登陆】
  13. 前端入门7-JavaScript语法之相关术语
  14. airflow 实战
  15. 运行程序,解读this指向---case6
  16. Java多线程(1) 创建
  17. C#可选参数、命名参数、参数数组
  18. 英特尔&#174; 实感™ 前置摄像头 SR300 和 F200 的比较
  19. SQL select查询原理--查询语句执行原则&lt;转&gt;
  20. python虚拟环境的搭建命令mkvirtualenv

热门文章

  1. elasticsearch 基本用法
  2. ListView控件绑定DataSet
  3. Angular 学习笔记——ng-repeat 隔行换色
  4. hibernate学习系列-----(4)hibernate基本查询上篇:HQL基本查询
  5. Shell 进度条效果的一个实现
  6. #include &lt;&gt;与#include&quot;&quot;区别
  7. Linux下的非阻塞IO(一)
  8. spring 国际化-i18n
  9. Linux基础ls命令
  10. Android开发系列之系统源码目录