当前位置: 首页 > news >正文

django登录与注销学习笔记

创建工程

django-admin startproject 工程名字

创建项目

python manage.py startapp 应用名
django登录与注销学习笔记

注册django后台管理代码

#后台认证数据表迁移
D:\pythonspacen\djano\guest>python manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying auth.0009_alter_user_last_name_max_length... OK
  Applying sessions.0001_initial... OK

#创建用户
D:\pythonspacen\djano\guest>manage.py createsuperuser
Username (leave blank to use 'admin'):
Email address: admin@admin.com
Password:
Password (again):
The password is too similar to the email address.
Password:
Password (again):
Superuser created successfully.

编写配置路由代码

from django.contrib import admin
from django.urls import path

from sign import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', views.index),
    path('index/', views.index),
    path('accounts/login/', views.index),  # 认证系统
    path('Login/', views.Login),
    path('logout/', views.logout),  # 退出系统
    path('event_manage/', views.event_manage),
]

编写视图代码

from django.contrib.messages.storage import session
from django.shortcuts import render
from django.http import HttpResponse, HttpResponseRedirect
from django.contrib import auth
from django.contrib.auth.decorators import login_required

def index(request):
    return render(request, "index.html")

# 使用django登录
def Login(request):
    if request.method == 'POST':
        login_username = request.POST.get('username', '')
        login_password = request.POST.get('password', '')
        # 使用框架系统的用户系统
        user = auth.authenticate(username=login_username, password=login_password)
        if user is not None:
            auth.login(request, user)
            request.session['user'] = login_username
            response = HttpResponseRedirect('/event_manage/')
            return response
        elif login_password == "" and login_username == "":
            return render(request, "index.html", {'error': 'username or password  null'})
        else:
            return render(request, "index.html", {'error': 'username or password error!'})
    else:
        return render(request, "index.html")

# 列表
@login_required
def event_manage(request):
    # username = request.COOKIES.get("user", "")
    username = request.session.get('user', '')
    conten = {'infon': "login success!", 'user': username}
    return render(request, "event_manage.html", conten)

# 退出
@login_required
def logout(request):
    # 使用框架系统退出
    auth.logout(request)
    # 调转到页面
    response = HttpResponseRedirect('/index/')
    return response

启动项目

django登录与注销学习笔记

使用刚才注册的用户名与密码登录
django登录与注销学习笔记
django登录与注销学习笔记

登录成功

django登录与注销学习笔记

inde.html

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>登录页面</title>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" rel="stylesheet">
    <style type="text/css">
        #red {
            color: red;
        }
    </style>
</head>
<body>

<div class="container">
    <form class="form-horizontal" action="/Login/" method="post">
        <div class="form-group">
            <label for="inputEmail3" class="col-sm-2 control-label">用户名: </label>
            <div class="col-sm-10">
                <input type="text" name="username" class="form-control-static" id="inputEmail3" placeholder="username">
            </div>
        </div>
        <div class="form-group">
            <label for="inputPassword3" class="col-sm-2 control-label">密码:</label>
            <div class="col-sm-10">
                <input type="password" name="password" class="form-control-static" id="inputPassword3"
                       placeholder="Password">
            </div>
        </div>
        <p id="red" style="left: 390px">{{ error }}</p>
        <div class="form-group">
            <div class="col-sm-offset-2 col-sm-10">
                <div class="checkbox">
                    <label>
                        <input type="checkbox"> 记住
                    </label>
                </div>
            </div>
        </div>
        <div class="form-group">
            <div class="col-sm-offset-2 col-sm-10">
                <button type="submit" class="btn btn-primary">登录</button>
            </div>
        </div>
        {% csrf_token %}
    </form>

</div>
<!-- jQuery (Bootstrap 的所有 JavaScript 插件都依赖 jQuery,所以必须放在前边) -->
<script src="https://cdn.jsdelivr.net/npm/jquery@1.12.4/dist/jquery.min.js"></script>
<!-- 加载 Bootstrap 的所有 JavaScript 插件。你也可以根据需要只加载单个插件。 -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js"></script>
</body>
</html>

页面跳转

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>发布会列表</title>
</head>
<body>
<a href="/logout/">退出</a>
<a href="/event_manage/"> Welcome,{{ user }}</a>
<h2>{{ infon }}</h2>

</body>
</html>

转载于:https://blog.51cto.com/357712148/2374598

相关文章:

  • 普刊发表要求
  • 如何阅读jdk源码?
  • 判断语句与循环语句
  • 类(初学)
  • 如何理解MVVM?
  • 程序员着装的退化史:曾经也是体面人
  • kubernetes1.4新特性(一):支持sysctl命令
  • Linux通配符应用详解
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • 性能测试学习 第四课
  • Markdown 编辑器 1.1.7 发布,新增全屏模式
  • pdf如何解密?解密的方法有这些
  • linux安装docker
  • docker使用阿里云镜像仓库
  • JDK基础---组合知识疑问
  • [译] React v16.8: 含有Hooks的版本
  • 《深入 React 技术栈》
  • 「前端早读君006」移动开发必备:那些玩转H5的小技巧
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • GraphQL学习过程应该是这样的
  • IDEA常用插件整理
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • Laravel5.4 Queues队列学习
  • MQ框架的比较
  • Odoo domain写法及运用
  • SpiderData 2019年2月23日 DApp数据排行榜
  • use Google search engine
  • 如何用vue打造一个移动端音乐播放器
  • 用mpvue开发微信小程序
  • 远离DoS攻击 Windows Server 2016发布DNS政策
  • ionic异常记录
  • UI设计初学者应该如何入门?
  • 湖北分布式智能数据采集方法有哪些?
  • 如何在招聘中考核.NET架构师
  • ​Python 3 新特性:类型注解
  • ​卜东波研究员:高观点下的少儿计算思维
  • #define,static,const,三种常量的区别
  • (02)Cartographer源码无死角解析-(03) 新数据运行与地图保存、加载地图启动仅定位模式
  • (ros//EnvironmentVariables)ros环境变量
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (三)Hyperledger Fabric 1.1安装部署-chaincode测试
  • (十) 初识 Docker file
  • (十一)JAVA springboot ssm b2b2c多用户商城系统源码:服务网关Zuul高级篇
  • (转)JAVA中的堆栈
  • .NET C# 使用 SetWindowsHookEx 监听鼠标或键盘消息以及此方法的坑
  • .net 前台table如何加一列下拉框_如何用Word编辑参考文献
  • .NET6 命令行启动及发布单个Exe文件
  • .NET轻量级ORM组件Dapper葵花宝典
  • /etc/X11/xorg.conf 文件被误改后进不了图形化界面
  • @vue/cli脚手架
  • [ 隧道技术 ] 反弹shell的集中常见方式(四)python反弹shell
  • [1] 平面(Plane)图形的生成算法
  • [52PJ] Java面向对象笔记(转自52 1510988116)
  • [BUUCTF]-PWN:wustctf2020_number_game解析(补码,整数漏洞)
  • [C++提高编程](三):STL初识