Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django,匹配查询不存在_Python_Django - Fatal编程技术网

Python Django,匹配查询不存在

Python Django,匹配查询不存在,python,django,Python,Django,我是Django的新手。在pycharm上运行命令python manage.py runserver时,会收到如下错误消息 2017-12-03 05:09:56,952 - INFO - server - Listening on endpoint tcp:port=8000:interface=127.0.0.1 Internal Server Error: / Traceback (most recent call last): File "/Users/mac/anaconda/li

我是Django的新手。在pycharm上运行命令python manage.py runserver时,会收到如下错误消息

2017-12-03 05:09:56,952 - INFO - server - Listening on endpoint 
tcp:port=8000:interface=127.0.0.1
Internal Server Error: /
Traceback (most recent call last):
File "/Users/mac/anaconda/lib/python3.6/site-packages/django/core/handlers/exception.py", line 41, in innerresponse = get_response(request)
File "/Users/mac/anaconda/lib/python3.6/site-packages/django/core/handlers/base.py", line 187, in _get_response response = self.process_exception_by_middleware(e, request)
File "/Users/mac/anaconda/lib/python3.6/site-packages/channels/handler.py", line 243, in process_exception_by_middleware
return super(AsgiHandler,self).process_exception_by_middleware(exception, request)
File "/Users/mac/anaconda/lib/python3.6/site-packages/django/core/handlers/base.py", line 185, in _get_response response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/Users/mac/PycharmProjects/590/flightmate/webapp/views.py", line 180, in index airlines = RecordSet.objects.get(name="airline")
File "/Users/mac/anaconda/lib/python3.6/site-packages/django/db/models/manager.py", line 85, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "/Users/mac/anaconda/lib/python3.6/site-packages/django/db/models/query.py", line 380, in get self.model._meta.object_name
webapp.models.DoesNotExist: RecordSet matching query does not exist.
models.py的代码为:


models.py的父目录是目录webapp。任何建议都将不胜感激,谢谢

从回溯中可以看出,问题在于:

airlines = RecordSet.objects.get(name="airline")
您正在使用get检索单个对象,由于该对象不存在,它将返回DoesNotExist异常。本分章Django文件中也明确提到了这一点

如果没有与查询匹配的结果,get将引发 DoesNotExist例外。此异常是模型的一个属性 类执行查询-因此在上面的代码中,如果 没有主键为1的Entry对象,Django将引发 Entry.DoesNotExist


请使用筛选器或获取并重试。。。除了声明。如果知道只有一个对象与查询匹配,则应使用get,否则请使用筛选器。

从回溯中可以看出,问题在于:

airlines = RecordSet.objects.get(name="airline")
您正在使用get检索单个对象,由于该对象不存在,它将返回DoesNotExist异常。本分章Django文件中也明确提到了这一点

如果没有与查询匹配的结果,get将引发 DoesNotExist例外。此异常是模型的一个属性 类执行查询-因此在上面的代码中,如果 没有主键为1的Entry对象,Django将引发 Entry.DoesNotExist


请使用筛选器或获取并重试。。。除了声明。如果您知道只有一个对象与您的查询匹配,那么应该使用get,否则请使用filter。

在我的例子中,我通过尝试以下方法解决了这个问题

我使用过滤器而不是get,所以我解决了我的问题。谢谢你的回答

airlines = RecordSet.objects.filter(name="airline")

在我的情况下,我通过尝试以下方法来解决此问题

我使用过滤器而不是get,所以我解决了我的问题。谢谢你的回答

airlines = RecordSet.objects.filter(name="airline")

现在回答这个问题有点晚了,但是对于那些有类似问题的人来说,出现这个错误可能还有其他原因。 这可能发生在“url顺序或url名称”中

在我的例子中,我通过Ajax调用向url发送post请求,如下代码所示。即使我正在发送“topic favorite”的特定url,url.py也会将地址请求发送到topic_视图,并且topic_视图会尝试将对象与未提供给view函数的topic_slug进行匹配。匹配查询不存在时发生错误

url.py 路径'topic/',views.topic_view,name='topic', 路径'topic/add/',views.topic\u favorite\u view,name='topic\u favorite', .js $.ajax{ url:$this.data'url', 键入:“POST”, 数据:{ csrfmiddlewaretoken:csrftoken, 主题_slug:topicSlug, 行动:"张贴",, }, 成功:函数res{ //控制台。logres }, 因此,我所做的是更改url顺序,将主题置于主题之上

路径'topic/add/',views.topic\u favorite\u view,name='topic\u favorite', 路径'topic/',views.topic_view,name='topic', 或者像这样更改url名称

'收藏/添加/' '主题/收藏夹/添加/'
现在回答这个问题有点晚了,但是对于那些有类似问题的人来说,出现这个错误可能还有其他原因。 这可能发生在“url顺序或url名称”中

在我的例子中,我通过Ajax调用向url发送post请求,如下代码所示。即使我向topic\u视图发送“topic Favorite”的特定url,url.py已寻址请求,topic\u视图尝试将对象与未提供给view函数的topic\u slug进行匹配。出现了匹配查询不匹配的错误是的

url.py 路径'topic/',views.topic_view,name='topic', 路径'topic/add/',views.topic\u favorite\u view,name='topic\u favorite', .js $.ajax{ url:$this.data'url', 键入:“POST”, 数据:{ csrfmiddlewaretoken:csrftoken, 主题_slug:topicSlug, 行动:"张贴",, }, 成功:函数res{ //控制台。logres }, 因此,我所做的是更改url顺序,将主题置于主题之上

路径'topic/add/',views.topic\u favorite\u view,name='topic\u favorite', 路径'topic/',views.topic_view,name='topic', 或者像这样更改url名称

'收藏/添加/' '主题/收藏夹/添加/'
您应该将shell中的错误堆栈添加到post中。您应该将shell中的错误堆栈添加到post中。