文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-06-02 04:15

关注

实现登录验证

我们继续来完善投票应用。在上一个章节中,我们在用户登录成功后通过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天学习教程:中间件的应用

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 资料下载
  • 历年真题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯