从本地调用 .py 脚本的 Ajax 调用正常工作,直到在顶部添加了简单的导入,此时会以 500 错误失败

2024-06-16 10:46:37 发布

您现在位置:Python中文网/ 问答频道 /正文

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

$.ajax({
        type: 'GET',
        url: 'get-dropdown-contents', //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的脚本:

from hs_restclient import HydroShare, HydroShareAuthBasic
from django.http import JsonResponse
from functions import irods_query


def get_dropdown_contents(request):
    print "Entered"
    if request.method == 'GET':
        selection_path = request.GET['selection_path']
        irods_data = irods_query(selection_path)
        return JsonResponse({
                                'success': "Response successfully returned!",
                                'irods_data': irods_data
                            })


def upload_to_hydroshare(request):
    if request.method == 'GET':
        hydro_username = request.GET['hydro_username']
        hydro_password = request.GET['hydro_password']
        try:
            print hydro_password
            print hydro_username
            hs = HydroShare(auth=HydroShareAuthBasic(username='joe', password='shmoe'))
        except Exception, err:
            print "Err: " + str(err)
            return JsonResponse({'error': 'Username or password invalid'})
        return JsonResponse({'success': 'Response successfully returned!'})

ajax调用调用get\u dropdown\u contents()函数,效果非常好。然而,只要加上from hs_resclient import。。。语句中,ajax调用现在失败,并出现500个内部服务器错误。如果我把那句话注释掉,这个调用就可以正常工作。我一辈子都搞不懂为什么。你知道吗

有什么想法吗?你知道吗


Tags: pathfromimportdatagetrequestusernameajax
2条回答

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

$.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

尝试添加

import cgitb
cgitb.enable()

到python文件的顶部。当发生内部服务器错误时,这应该将回溯重定向到浏览器,并提供更多信息。记得把这个拿下来生产。你知道吗

相关问题 更多 >