返回顶部
首页 > 资讯 > 后端开发 > Python >Python100天学习教程:中间件的应用
  • 720
分享到

Python100天学习教程:中间件的应用

2023-06-02 04:06:15 720人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

实现登录验证我们继续来完善投票应用。在上一个章节中,我们在用户登录成功后通过session保留了用户信息,接下来我们可以应用做一些调整,要求在为老师投票时必须要先登录,登录过的用户可以投票,否则就将用户引导到登录页面,为此我们可以这样修改视

实现登录验证

我们继续来完善投票应用。在上一个章节中,我们在用户登录成功后通过session保留了用户信息,接下来我们可以应用做一些调整,要求在为老师投票时必须要先登录,登录过的用户可以投票,否则就将用户引导到登录页面,为此我们可以这样修改视图函数。

def praise_or_criticize(request: HttpRequest): """投票""" if 'username' in request.session: try: tno = int(request.GET.get('tno', '0')) teacher = Teacher.objects.get(no=tno) if request.path.startswith('/praise'): teacher.Good_count += 1 else: teacher.bad_count += 1 teacher.save() data = {'code': 200, 'message': '操作成功'} except (ValueError, Teacher.DoesNotExist): data = {'code': 404, 'message': '操作失败'} else: data = {'code': 401, 'message': '请先登录'} return JSONResponse(data)

前端页面在收到{'code': 401, 'message': '请先登录'}后,可以将用户引导到登录页面,修改后的teacher.html页面的javascript代码部门如下所示。

<script> $(() => { $('.comment > a').on('click', (evt) => { evt.preventDefault() let a = $(evt.target) $.getjsON(a.attr('href'), (json) => { if (json.code == 200) { let span = a.next() span.text(parseInt(span.text()) + 1) } else if (json.code == 401) { location.href = '/login/?backurl=' + location.href } else { alert(json.message) } }) }) })</script>

注意:为了在登录成功之后能够回到刚才投票的页面,我们在跳转登录时设置了一个backurl参数,把当前浏览器中的URL作为返回的页面地址。

这样我们已经实现了用户必须登录才能投票的限制,但是一个新的问题来了。如果我们的应用中有很多功能都需要用户先登录才能执行,例如将前面导出excel报表和查看统计图表的功能都加以登录限制,那么我们是不是需要在每个视图函数中添加代码来检查session中是否包含了登录用户的信息呢?答案是否定的,如果这样做了,我们的视图函数中必然会充斥着大量的重复代码。编程大师Martin Fowler曾经说过:代码有很多种坏味道,重复是最坏的一种。在Django项目中,我们可以把验证用户是否登录这样的重复性代码放到中间件中。

Python100天学习教程:中间件的应用

--结束END--

本文标题: Python100天学习教程:中间件的应用

本文链接: https://lsjlt.com/news/228739.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python100天学习教程:中间件的应用
    实现登录验证我们继续来完善投票应用。在上一个章节中,我们在用户登录成功后通过session保留了用户信息,接下来我们可以应用做一些调整,要求在为老师投票时必须要先登录,登录过的用户可以投票,否则就将用户引导到登录页面,为此我们可以这样修改视...
    99+
    2023-06-02
  • scrapy 爬虫学习二[中间件的学习]
    scrapy源码解析参考连接:https://www.jianshu.com/p/d492adf17312 ,直接看大佬的就行了,这里便就不多说了。 今天要学习的是:Scrapy框架中的download middlerware【下载中间件...
    99+
    2023-01-31
    爬虫 中间件 scrapy
  • NodeJS学习笔记之Connect中间件应用实例
    一,开篇分析 大家好哦,大熊君又来了,昨天因为有点个人的事没有写博客,今天又出来了一篇,这篇主要是写一个记事本的小应用,前面的文章, 我也介绍过“Connect”中间件的使用以及“Mongodb”的用法,今...
    99+
    2022-06-04
    学习笔记 中间件 应用实例
  • Android应用开发中使用Fragment的入门学习教程
      Fragment是Android honeycomb 3.0开始新增的概念,Fragment名为碎片不过却和Activity十分相似,下面介绍下Android F...
    99+
    2022-06-06
    学习 fragment 教程 Android
  • socket.io学习教程之基本应用(二)
    前言 Socket.IO支持及时、双向与基于事件的交流。它可以在每个平台、每个浏览器和每个设备上工作,可靠性和速度同样稳定。 实时分析:将数据推送到客户端,这些客户端会被表示为实时计数器,图表或日志客...
    99+
    2022-06-04
    教程 socket io
  • python爬虫框架scrapy代理中间件掌握学习教程
    目录代理的使用场景使用 HttpProxyMiddleware 中间件代理的使用场景 编写爬虫代码的程序员,永远绕不开就是使用代理,在编码过程中,你会碰到如下情形: 网络不好,需要代...
    99+
    2024-04-02
  • 云计算教程学习入门视频课件:什么是中间件?
    中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。是连接两个独立应用程序或独立系统的软件。相连接的系统,即使它们具有不同的接口,但通...
    99+
    2023-06-04
  • 生命在于学习——框架-中间件的学习(一)
    声明:本篇文章仅用于学习笔记记录,不得用于其他用途。 一、什么是框架 Web框架(Web framework)或者叫做Web应用框架(Web application framework),是用于进行...
    99+
    2023-09-28
    学习 中间件 php
  • Python学习之时间包使用教程详解
    目录datetime 时间包datetime 时间包的常用功能时间对象转字符串时间字符串转时间类型时间格式符time模块认识时间戳time 模块的常用方法datetime 中生成时间...
    99+
    2024-04-02
  • Python中基本的日期时间处理的学习教程
    Python程序能用很多方式处理日期和时间。转换日期格式是一个常见的例行琐事。Python有一个 time 和 calendar 模组可以帮忙。 什么是Tick? 时间间隔是以秒为单位的浮点小数。 每个时间...
    99+
    2022-06-04
    日期 时间 教程
  • Python学习教程100天(Python学习路线):Day07字符串和常用数据结构
    字符串和常用数据结构使用字符串第二次世界大战促使了现代电子计算机的诞生,当初的想法很简单,就是用计算机来计算的弹道,因此在计算机刚刚诞生的那个年代,计算机处理的信息主要是数值,而世界上的第一台电子计算机ENIAC每秒钟能够完成约5000次浮...
    99+
    2023-06-02
  • Swift中的协议(protocol)学习教程
    一、引言 协议约定了一些属性与方法,其作用类似Java中的抽象类,Swift中类型通过遵守协议来实现一些约定的属性和方法。Swift中的协议使用protocol关键字来声明。Swift中的协议还有一个十分有...
    99+
    2022-06-04
    协议 教程 Swift
  • Git响应教程:学习Python的最佳实践。
    Git响应教程:学习Python的最佳实践 在当今的软件开发领域中,Git已经成为了版本控制系统的首选。而Python则是一门广泛应用于各种领域的编程语言。在Python开发过程中,使用Git进行版本控制可以大大提高开发效率和代码质量。本文...
    99+
    2023-10-17
    git 响应 教程
  • Python中的条件判断语句基础学习教程
    if语句用来检验一个条件, 如果 条件为真,我们运行一块语句(称为 if-块 ), 否则 我们处理另外一块语句(称为 else-块 )。 else 从句是可选的。 使用if语句: #!/usr/bin...
    99+
    2022-06-04
    语句 条件 基础
  • python爬虫框架Scrapy基本应用学习教程
    在正式编写爬虫案例前,先对 scrapy 进行一下系统的学习。 scrapy 安装与简单运行 使用命令 pip install scrapy 进行安装,成功之后,还需要随手收藏几个网...
    99+
    2024-04-02
  • Android学习教程之日历控件使用(7)
    本文实例为大家分享了Android日历控件的使用方法,供大家参考,具体内容如下 MainActivity.java代码: package siso.timessquare; ...
    99+
    2022-06-06
    android学习 程之 教程 Android
  • redux功能强大的Middleware中间件使用学习
    目录引言redux中的Middleware记录日志手动记录redux-sagaGenerator函数实际使用场景引言 上一节我们学习了redux在实际项目的应用细节,这一节我们来学习...
    99+
    2024-04-02
  • Golang在强化学习中的机器学习应用
    Golang 在强化学习中的机器学习应用 简介 强化学习是一种机器学习方法,通过与环境互动并根据奖励反馈学习最优行为。Go 语言具有并行、并发和内存安全等特性,使其在强化学习中具有优势...
    99+
    2024-05-08
    机器学习 强化学习 git golang
  • 云计算教程学习入门视频课件:云应用是什么?
    云计算作为当今IT技术当中比较核心发展一项技术方面,开始被越来越多的企业所关注,我们都知道,任何云计算服务都是需要建立一个十分强大的基础设施,这些技术设施其实就是由众多的硬件设备,比如服务器、防火墙等硬件设备组成的,成千上万台服务器所组成的...
    99+
    2023-06-04
  • Python中的Descriptor描述符学习教程
    Descriptor是什么?简而言之,Descriptor是用来定制访问类或实例的成员的一种协议。额。。好吧,一句话是说不清楚的。下面先介绍一下Python中成员变量的定义和使用。 我们知道,在Python...
    99+
    2022-06-04
    教程 Python Descriptor
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作