对本地 .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 在我的 HTML 文档中获取 PHP 文件,但其中的脚本不起作用
为啥单个 Ajax 调用工作正常,但连续 Ajax 调用失败?