Django操作session实例
session项目文件:
templates模板:
login.html
- {% load static %}
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>login</title>
- </head>
- <body>
- <div>
- 用户名:<input type="text" id="username"><br>
- 密码:<input type="password" id="password"> <br>
- <button id="submit">登录</button><pan id="warning" style="color: red"></pan>
- {% csrf_token %}
- </div>
- </body>
- <script src="{% static 'jquery-3.4.1.js' %}"></script>
- {#<!--<script src="{% static 'js/login.js' %}"></script>--><!--ajax中有url的反向解析,只能放在html模板中-->#}
- <script>
- $(function () {
- $('#submit').click(function () {
- $.ajax({
- url:"{% url 'login' %}",
- type:'post',
- data:{
- username:$('#username').val(),
- password:$('#password').val(),
- csrfmiddlewaretoken:$('input[name=csrfmiddlewaretoken]').val(),//可以直接放在headers里边
- },
- success:function (response) {
- console.log(response)
- if (response.status===0){
- //$('#submit').after('<span><i>账号或密码有误</i></span>')
- $('#warning').text('账号或密码有误')
- }else if (response.status===1){
- location.href=response.url
- }
- }
- })
- })
- });
- </script>
- </html>
login.html
index.html
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>index</title>
- </head>
- <body>
- <div>
- <h1>欢迎来到首页</h1>
- </div>
- <a href='{% url 'more' %}'>more</a>
- </body>
- </html>
index.html
more.html
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>more</title>
- </head>
- <body>
- <div><h1>更多信息</h1></div>
- </body>
- </html>
more.html
viwes.py
- from django.shortcuts import render,redirect
- from django.http import JsonResponse
- from django.urls import reverse
- # Create your views here.
- def login(request):
- if request.method=='GET':
- return render(request,'login.html')
- elif request.method=='POST':
- name=request.POST.get('username')
- psd=request.POST.get('password')
- if name=='yang' and psd=='':
- #在使用session之前必须在数据库创建相关的表(django_session)
- #调用request.session首先会接收请求头部的cookie是否有sessionid,进行表查询对比
- #如果有重新生成一个sessionid进行覆盖更新记录,
- # 没有则新建存进表中的session_key,同时将字典信息加密自动存进表中的session_data字段
- request.session['status']=True
- request.session['name']=name
- status=1
- url=reverse('index')
- else:
- status=0
- url=''
- return JsonResponse({'status':status,'url':url})
- def login_auth(func):
- def inner(request):
- if request.session.get('status'):#在判断网页请求的状态时,直接调用request.session从djang_session表中读取数据验证
- return func(request)
- else:
- return redirect('login')
- return inner
- @login_auth
- def index(request):
- return render(request,'index.html')
- @login_auth
- def more(request):
- # request.session.flush()#同时删除客户端和服务端的session
- return render(request,'more.html')
views.py
urls.py
- from django.conf.urls import url
- from django.contrib import admin
- from app01 import views
- urlpatterns = [
- url(r'^admin/', admin.site.urls),
- url(r'^login/', views.login, name='login'),
- url(r'^index/', views.index, name='index'),
- url(r'^more/', views.more, name='more'),
- ]
urls.py
Django操作session实例的更多相关文章
- Django(34)Django操作session(超详细)
前言 session: session和cookie的作用有点类似,都是为了存储用户相关的信息.不同的是,cookie是存储在本地浏览器,session是一个思路.一个概念.一个服务器存储授权信息的解 ...
- Django操作session
session是存放在服务端的,在django中使用session必须要先在数据库中创建django_session表,session相关信息都要依赖此表 获取session request.sess ...
- Django操作cookie实例
cookie项目文件: templates模板: login.html {% load static %} <!DOCTYPE html> <html lang="en& ...
- day55:django:cookie&session
目录 1.Cookie 1.Cookie前戏 2.Cookie的引入 3.django中操作cookie 2.Session 1.cookie的局限性 2.session技术 3.django操作se ...
- {Django基础八之cookie和session}一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session
Django基础八之cookie和session 本节目录 一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session 六 xxx 七 ...
- C#操作session的类实例
本文实例讲述了C#操作session的类.分享给大家供大家参考.具体分析如下: 这个C#类对session操作进行了再次封装,可以大大简化session的常用操作,同时这个类可以将session值设置 ...
- Django 操作Cookie与Session
目录 Cookie Session Django中操作Cookie 基本操作 基于cookie的登录装饰器 Django中操作Session 基本操作 Session流程解析 基于session的登录 ...
- 137.在Django中操作session
在Django中操作session 在django中session默认情况下是存储在服务器的数据库中的,在表中会根据sessionid来提取指定的session数据,然后再把这个sessionid放到 ...
- 在pycharm中批量插入表数据、分页原理、cookie和session介绍、django操作cookie
昨日内容回顾 ajax发送json格式数据 ''' 1. urlencoded 2. form-data 3. json ''' 1. ajax $.ajax({ data: JSON.stringi ...
随机推荐
- 【Linux常见命令】cp命令
cp - copy files and directories 拷贝文件或目标文件夹,默认不能直接拷贝目录,通过-r参数设置递归复制目录 copy 语法: cp [OPTION]... [-T] SO ...
- 《Redis设计与实现》之第十二章:事件
Redis服务器是一个事件驱动程序,服务器需要处理两类事件: 文件事件: 文件事件就是服务器对套接字(socket)操作的抽象,服务器和客户端的通信会产生文件事件 时间事件: 时间事件就是服务器对定时 ...
- Java中的集合Queue
2019独角兽企业重金招聘Python工程师标准>>> package com.zhaogang.test; import org.junit.Test; import java.u ...
- Java之JVM(初学者)
学习Java的第一次总结 1.Java程序的编译和执行 通过上图,我们轻易得出java执行过程:由javac编译为字节码文件,通过JVM转换为底层操作系统可识别的命令操作. 注意:①Java跨平台的始 ...
- 题解 CF1286A 【Garland】
updata on 2020.3.19 往博客园搬的时候看了看自己以前写的blog 其实没多久,才两个多月,感觉自己之前写的东西好罗嗦啊.. 但也是最近写的blog才开始多起来 当然现在也没好到哪去. ...
- muduo网络库源码学习————线程本地单例类封装
muduo库中线程本地单例类封装代码是ThreadLocalSingleton.h 如下所示: //线程本地单例类封装 // Use of this source code is governed b ...
- Android RecyclerView滚动类控件修改、去掉滑动边界的阴影效果
前言 滚动类控件,大家都用的很多,如 RecyclerView.NestedSrollView.... 下面以recyclerView为例讲解,其他滚动控件也同理. RecyclerView 滚动列表 ...
- mysql5.7 修改密码,修改权限
1.修改数据库对指定用户和ip权限 a. IP为192.168.0.1的用户jack拥有对数据库datebase的表table的 增删改查权限, ,连接密码为password grant select ...
- vue后台管理系统介绍
项目GitHub地址:https://github.com/Little-Orange7/cmms-vue 一.简介 很多公司稍微复杂一点的业务,基本上都需要后台管理系统,来对业务进行各个维度的统计. ...
- A. Hilbert's Hotel(数学)
传送门 \(看了一下网上都没什么题解,自己写一篇吧,对你有帮助的话留个言吧~\) \(\color{Orange}{----------------------分割------------------ ...