DjangoAJAX请求500个内部服务器错误,错误为“匹配查询不存在”

2024-10-02 10:19:03 发布

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

我在建立一个基于Django的网站时遇到了一个问题; 我需要在开始时使用Ajax运行几个模板更新:

 $(document).ready(function () {
        var trees = ['1','2','3','4','5','6']
        for (i = 0; i < trees.length; i++) {
            $.ajax({
                'url': '/structure/showtrees',
                'data': {
                    number:trees[i]
                },
                'type': 'GET',
                'success': function (data) {
                    $("#phylo"+i).html(data);
                }
            });
        };
    });

这是重定向通过网址.py看起来像这样: 从django.conf.url导入模式,url

^{pr2}$

在视图.py“目标函数是:

def RenderTrees(request):
print(request.session)
number = request.session.GET['number']
tree = open('static/home/images/00'+number+'_tree.xml').read()

return render(request, 'tree'+number+'.html', {'tree':tree,'num':number})

我把“打印(session)”作为标记,但它从来没有显示出来。 在页面加载期间,我得到:

GET http://localhost:8000/structure/showtrees?number=1 500 INTERNAL SERVER ERROR        464ms

反应是

DoesNotExist at /structure/showtrees
Structure matching query does not exist.

我一直在找,找不到这个问题的答案。在

编辑: 在此处进行完整回溯:

    DoesNotExist at /structure/showtrees
Structure matching query does not exist.

Request Method: GET
Request URL: http://localhost:8000/structure/showtrees?number=1
Django Version: 1.8.4
Python Executable: /usr/bin/python3
Python Version: 3.4.3
Python Path: ['/vagrant/protwis', '/usr/lib/python3.4', '/usr/lib/python3.4/plat-x86_64-linux-gnu', '
/usr/lib/python3.4/lib-dynload', '/usr/local/lib/python3.4/dist-packages', '/usr/lib/python3/dist-packages'
]
Server time: Fri, 25 Sep 2015 19:05:08 +0200
Installed Applications:
('django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'debug_toolbar',
 'rest_framework',
 'rest_framework_swagger',
 'django_nvd3',
 'common',
 'api',
 'documentation',
 'news',
 'pages',
 'home',
 'protein',
 'family',
 'residue',
 'alignment',
 'similaritysearch',
 'similaritymatrix',
 'structure',
 'ligand',
 'interaction',
 'mutation',
 'phylogenetic_trees',
 'sitesearch',
 'build_gpcr')
Installed Middleware:
('debug_toolbar.middleware.DebugToolbarMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware')

Traceback:
File "/usr/local/lib/python3.4/dist-packages/django/core/handlers/base.py" in get_response
  132.                     response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/vagrant/protwis/structure/views.py" in StructureDetails
  64.     crystal = Structure.objects.get(pdb_code__index=pdbname)
File "/usr/local/lib/python3.4/dist-packages/django/db/models/manager.py" in manager_method
  127.                 return getattr(self.get_queryset(), name)(*args, **kwargs)
File "/usr/local/lib/python3.4/dist-packages/django/db/models/query.py" in get
  334.                 self.model._meta.object_name

Exception Type: DoesNotExist at /structure/showtrees
Exception Value: Structure matching query does not exist.
Request information:
GET:
number = '1'

POST: No POST data

FILES: No FILES data

COOKIES:
djdt = 'hide'
csrftoken = 'fH9XuekPOAU6drwD8tHHGBecE7YxMqms'
sessionid = 'lf0wjer4wyyp98ez9y5ngbcawb1xxbak'

Tags: djangopytreenumberdatagetrequestlib
2条回答

您调用的url是/structure/showtrees,但是网址.py文件,您只定义了/showtrees。这就是你的错误。要解决这个问题,请将JS调用改为/showtrees,或者插入网址.py一个名为structure
你好像在用结构.objects.get,在某处,Django举起了一个DoesNotExists exception。检查数据库中是否存在结构对象。
你的问题就在这条线上:

crystal = Structure.objects.get(pdb_code__index=pdbname)

检查查询集上的过滤器。在

好的,我在我的代码中发现了问题,其中一个网址网址.py有一个获取传递的任何字符串的regexp,因此没有调用:

url(r'^showtrees', views.RenderTrees, name='render')

它调用了另一个函数。谢谢你的帮助!在

相关问题 更多 >

    热门问题