【问题标题】:Django matching query does not exist in production environment生产环境中不存在Django匹配查询
【发布时间】:2016-07-05 09:43:00
【问题描述】:

我的 django 项目在生产中遇到问题。它引发“匹配查询不存在”。在我的本地主机中完美运行,错误仅在我的服务器中。

有错误的那一行是查询

sub_obj = Sub.objects.get(name=name)

在这种情况下,我无法通过“id”访问模型,因为视图通过 href 从模板获取该参数:

<a href="/pr/sub/{{s.name}}">{{s.name}}</a> 

当名称中有空格时会发生此错误,例如 name='My Name'。这可能与服务器有关吗?使用空格分隔的参数是否可能出现此错误?或者可能是别的什么?

这个视图的网址是

url(r'^pr/sub/(?P<nname>.*)', show_only_sub),

【问题讨论】:

  • nname 拼写正确吗?
  • 我已经用 url 更新了,问题只在我的服务器上(在本地工作正常),它与使用空格的查询有关。
  • 也许stackoverflow.com/questions/120951/… 可以帮助您,但我建议您在 URL 上使用 slug,而不是平面名称。

标签: python django


【解决方案1】:

名称中的空格可能会导致问题。尝试对 href 中的名称进行 urlencoding。

<a href="/pr/sub/{{s.name|urlencode}}">{{s.name}}</a>

【讨论】:

  • 我已经添加了,但我仍然收到错误消息。 name = '我的%20name'
  • 你必须取消编码。看看这里。 stackoverflow.com/a/26488773/4024523
  • 解决了添加一个蛞蝓。但是我不知道为什么我没有在本地服务器中收到错误。谢谢大家
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-10
  • 2018-03-16
  • 2020-12-04
  • 2015-01-28
  • 2022-01-05
  • 2020-10-15
相关资源
最近更新 更多