Django:ajax调用时需要login_required

2024-03-02

我正在尝试在 ajax post 上验证用户身份,但不起作用。这是我所做的

设置.py

LOGIN_URL = '/accounts/login/'
LOGIN_REDIRECT_URL = '/'

Template

<script>
  $('.btn-request').click(function(){
        var button = this;
        $.ajax({
                 type: "POST",
                 url: "{% url 'like' %}",
                 data: {'tutorial_id': $(this).attr('name'), 'csrfmiddlewaretoken': '{{csrf_token}}'},
                 dataType: "json",
                 success: function(json) {
                    toastr.success(json.message);

                  },
                  error: function(rs, e) {
                        alert(rs.responseText);
                  }
            });
      })
  </script>

urls.py

url(r'^like/$', 'apps.quotation.views.like', name='like'),

views.py - try 1

@login_required
def like(request):
        vars = {}
        if request.method == 'POST':
            response_dict = {}

            if not something:
                response_dict.update({'message': "Requested" })
            else:
                response_dict.update({'message': "You have already requested" })

        return HttpResponse(simplejson.dumps(response_dict),
                        mimetype='application/javascript')

views.py - try 2

def like(request):
    if not request.user.is_authenticated():
        return HttpResponseRedirect('/accounts/login')
    else:
        vars = {}
        if request.method == 'POST':
            response_dict = {}
            if not something:
                response_dict.update({'message': "Requested" })
            else:
                response_dict.update({'message': "You have already requested" })

        return HttpResponse(simplejson.dumps(response_dict),
                        mimetype='application/javascript')

运行服务器日志

[05/Mar/2014 05:19:16] "POST /like/ HTTP/1.1" 302 0
[05/Mar/2014 05:19:16] "GET /accounts/login/?next=/like/ HTTP/1.1" 200 5610

我缺少什么?


当我想检查 Ajax 调用时用户是否已登录时,我使用以下方法:

from functools import wraps
from django.core.exceptions import PermissionDenied

def ajax_login_required(view):
    @wraps(view)
    def wrapper(request, *args, **kwargs):
        if not request.user.is_authenticated():
            raise PermissionDenied
        return view(request, *args, **kwargs)
    return wrapper

raise PermissionDenied将导致 403 状态代码返回给客户端。否则,如果您使用@login_required装饰器或手动执行到表单的重定向,Ajax 调用所看到的响应对于人类来说是有意义的,但对 Ajax 调用来说却不是有意义的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django:ajax调用时需要login_required 的相关文章

随机推荐

  • 有人可以解释 Spring web.xml 文件吗?

    我是 Java Enterprise 和 Spring 的新手 但我对标准 Java 有很强的掌握 我正在查看一个现有的网络应用程序项目 该项目使用 Tomcat Spring Hibernate 据我所知这是相当常见的 它还使用 DWR
  • 如何在下次按下时聚焦下一个输入(如果有)

    我实际上知道如何做到这一点 但我需要一种不同的方法 所以我有如下文本输入
  • 如何在 macOS 上将 swiftUI 视图导出为 PDF 文件

    我需要在 macOS big sur 上将 swifUIview 导出为 PDF 文件 这是我正在使用的功能 func exportPDF let testView TestView let hostingView NSHostingVie
  • Vulkan 内存对齐要求

    我正在为 Vulkan 设备内存实现一个简单的内存管理器 并希望确保我了解内存的对齐要求以及如何满足这些要求 因此 假设我使用 vkAllocateMemory 分配了一个内存 池 并希望将该池中的内存块子分配给各个资源 基于 VkMemo
  • 全局定义分析器 (ES)

    我需要 想要在全球范围内定义我的自定义分析器 因此我根据这个答案编辑了ES的配置文件 elasticsearch yml 我可以自定义 Elastic Search 以使用我自己的停用词列表吗 https stackoverflow com
  • 在 ag-grid 上使用正确的单元格格式导出到 Excel

    当我使用 ag grid 自己的将表导出到 Excel 时exportDataAsExcel 生成的 Excel 包含日期为General数据类型而不是Date 我用过这个 exportDataAsExcel processCellCall
  • 如何将散点图中的异常值更改为其他颜色

    If I have a scatter plot like this 我想知道是否有任何方法可以将明显的异常值 例如顶部的三个 更改为同一图中的其他颜色 首先 您需要找到 异常值 的标准 一旦你有了这个 你就可以掩盖图中那些不需要的点 在
  • 如何从 JavaScript 调用小程序中声明的方法

    我正在尝试做一个基本的Java小程序 https en wikipedia org wiki Java applet为他们打开客户计算机上的文件 我想通过 JavaScript 调用下面 Java 小程序中的 openFile 函数 imp
  • 有没有办法比较两个会员的排名?

    我有一个 Discord 机器人 我正在编写警告命令 但我需要一个代码来比较两个成员 角色 的排名 例 A人的地位高于B人 如果 B 人试图警告 A 人 机器人会说 你不能警告这个人 如果 A 人试图警告 B 人 机器人就会警告 B 人 怎
  • 找到图像上的特定点

    我正在尝试编写一个程序来解决难题 我的尝试与我用来测试的示例谜题效果很好 现在我正在尝试为一个真正的谜题制作一个 这个新拼图的拼图块实际上没有正确的形状 我设法将图像变成黑白 最后变成 1 和 0 的数组 其中 1 表示片段 0 表示背景
  • 解决 svn update 时的合并冲突

    我正在尝试学习 Eric Sink 的版本控制基础知识 http ericsink com vcbe vcbe usletter lo pdf http ericsink com vcbe vcbe usletter lo pdf 我现在在
  • 使用 javascript 获取 DOM 树

    我正在开发一个小脚本分析 DOMHTML 页面和在屏幕上写下节点树 这是一个简单的函数 称为递归地获取所有节点及其子节点 每个节点的信息存储在一个数组中 自定义对象 我已经得到了所有节点在 DOM 中 但不是如何在树上画画通过嵌套列表 JS
  • 如何在Python中创建一个trie树

    我对 trie 和 DAWG 直接非循环字图 感兴趣 并且阅读了很多有关它们的内容 但我不明白输出 trie 或 DAWG 文件应该是什么样子 trie 应该是嵌套字典的对象吗 每个字母在哪里又分为to letter等等 如果有 100k
  • 设置 Combobox 的选定值而不触发 SelectionChanged 事件

    我有一个组合框
  • 添加文档时是否需要重建 MongoDB 索引

    我刚刚发现了 mongodb 索引的非凡力量 仅在几个字段上构建索引就使我能够将某些操作的速度提高 1000 倍甚至更多 我对一个看似愚蠢的问题表示歉意 一旦我在数据库中的特定字段上建立了索引 每次添加和删除文档时索引会自动重建吗 或者我必
  • 为什么在构建 MVC 项目时,我会随机收到“使用注册为allowDefinition='MachineToApplication'的节时出错”的错误消息?

    我在部署网站时看到了一些关于类似错误的问题 但我似乎在部署网站时随机收到此错误buildingVisual Studio 中的 ASP NET MVC 网站 执行清理通常可以解决问题 但是有什么方法可以完全避免这种情况吗 在应用程序级别之外
  • 通过 Javascript 访问 Chrome 和 Safari 中的 SVG DOM

    我试图显示一个缩放到对象大小的 SVG 以便缩放 600x600 的 svg 以适合 500x500 的对象或 300x300 的任何对象 这一切在 FireFox 中都工作得很好 但 Safari 和 Chrome Webkit 只是裁剪
  • clang-tidy 会让 clang-check 变得多余吗?

    这两个工具似乎有一些共同的目标 而clang tidy 的文档 http clang llvm org extra clang tidy 对其功能非常明确 铿锵检查的 https clang llvm org docs ClangCheck
  • 4.4.2 上完全禁用/隐藏状态栏

    我们正在为老年人开发一款启动器应用程序 它有一个非常简单的用户界面 我们不想显示状态栏或通知抽屉 现在我尝试禁用状态栏 但当我从屏幕上侧下拉时 它似乎重新出现 如果我第二次下拉通知抽屉被打开 有没有办法完全禁用状态栏 我检查了以下链接上的文
  • Django:ajax调用时需要login_required

    我正在尝试在 ajax post 上验证用户身份 但不起作用 这是我所做的 设置 py LOGIN URL accounts login LOGIN REDIRECT URL Template