对本地 .py 脚本的 Ajax 调用工作正常,直到我在顶部添加一个简单的导入,它失败并出现 500 错误

Posted

技术标签:

【中文标题】对本地 .py 脚本的 Ajax 调用工作正常,直到我在顶部添加一个简单的导入,它失败并出现 500 错误【英文标题】:Ajax call to local .py script works fine until I add a simple import at the top, upon which it fails with a 500 error 【发布时间】:2015-10-23 17:33:19 【问题描述】:

这一切都发生在 Django 平台上。 这是我的 ajax 调用:

$.ajax( 类型:'GET', url: 'get-dropdown-contents', // 映射到 controller_ajax.py 的 url 数据类型:'json', 数据:'selection_path':selectionPath, 成功:函数(数据) //blah blah blah....它没有到达这里

这是调用的 .py 脚本:

从 hs_restclient 导入 HydroShare、HydroShareAuthBasic 从 django.http 导入 JsonResponse 从函数导入 irods_query def get_dropdown_contents(请求): 打印“输入” 如果 request.method == 'GET': selection_path = request.GET['selection_path'] irods_data = irods_query(selection_path) 返回 JsonResponse( 'success': "响应成功返回!", 'irods_data': irods_data ) def upload_to_hydroshare(请求): 如果 request.method == 'GET': hydro_username = request.GET['hydro_username'] hydro_password = request.GET['hydro_password'] 尝试: 打印hydro_password 打印hydro_username hs = HydroShare(auth=HydroShareAuthBasic(用户名='joe', 密码='shmoe')) 除了异常,错误: 打印“错误:” + str(错误) return JsonResponse('error': '用户名或密码无效') return JsonResponse('success': '响应成功返回!')

调用 get_dropdown_contents() 函数的 ajax 调用运行良好。但是,通过简单地添加 from hs_resclient import... 语句,ajax 调用现在会失败,并出现 500 内部服务器错误。如果我注释掉那一条语句,调用就没有问题了。我无法弄清楚为什么我的生活。

有什么想法吗?

【问题讨论】:

如果你有可能在 Django 设置中打开DEBUG。看起来您的导入只是由于某种原因而失败,所以您收到了 500,因为出现了问题并且没有在任何地方被捕获。 【参考方案1】:

尝试添加

import cgitb
cgitb.enable()

到python文件的顶部。当内部服务器错误发生时,这应该将回溯重定向到浏览器并为您提供更多信息。请记住将其删除以进行生产。

【讨论】:

【参考方案2】:

我在 Web 服务器上工作时遇到了类似的问题,因为当我创建新文档时,它们没有正确的读/写/执行权限。这可能是您尝试包含的文档的问题吗?并且你需要在 ajax 调用中的文件名中包含“py”文件扩展名吗?

$.ajax(
        type: 'GET',
        url: 'get-dropdown-contents.py', //a url mapping to controller_ajax.py
        dataType:'json',
        data: 'selection_path': selectionPath,
        success: function (data) 
               //blah blah blah.... it doesn't reach here

【讨论】:

以上是关于对本地 .py 脚本的 Ajax 调用工作正常,直到我在顶部添加一个简单的导入,它失败并出现 500 错误的主要内容,如果未能解决你的问题,请参考以下文章

从 AJAX 或 JQuery 运行 Python 脚本

自动测试调用其他脚本

使用 AJAX 在我的 HTML 文档中获取 PHP 文件,但其中的脚本不起作用

为啥单个 Ajax 调用工作正常,但连续 Ajax 调用失败?

对本地主机的调用不适用于 ReactJS/Axios/Express

azkaban怎么在job里面直接调用python脚本啊,我调用shell脚本正常运行,调用python脚本没有运行