【问题标题】:Production django server throwing "NoReverseMatch" while rendering, works on development生产 django 服务器在渲染时抛出“NoReverseMatch”,适用于开发
【发布时间】:2011-05-20 07:27:43
【问题描述】:
Caught NoReverseMatch while rendering: Reverse for 'views.main' with arguments '()' and keyword arguments '{}' not found.

我不明白什么会导致错误。

我的网址

urlpatterns = patterns('',
url(r'^$', views.main),

html模板

<a href="{% url views.main %}"> bla bla blah</a>

在我看来.py

return render_to_response("main.html", d, context_instance=RequestContext(request)) 

我检查了我的 TEMPLATE_DIRS,它们似乎指向了正确的目录。

【问题讨论】:

  • 你在 dev 和 prod 中使用相同的 django 版本吗?您在 prod 中使用的网络服务器是什么?
  • 两者都是DJango 1.2.3 我的生产服务器是apache/django.wsgi

标签: django django-templates django-views


【解决方案1】:

很可能是您在其他地方出现错误,这导致您的某个视图无法被导入 - 可能是您的生产服务器上缺少依赖项。反向 URL 功能通过导入所有视图来工作,因此如果由于任何原因无法导入其中任何一个,您将看到 NoReverseMatch 错误。

【讨论】:

  • 这不是缺少的依赖项。事实上,我不知道是什么导致了这个问题。我刷新了我的生产图像并且能够很好地滚动。我希望我能向未来的 SO'ers 报告更多信息。
【解决方案2】:

试试:

url(r'^$', views.main, name="main-view")

在模板上:

<a href="{% url main-view %}"> bla bla blah</a>

【讨论】:

    【解决方案3】:

    我遇到了同样的事情,所以我尝试了 Paperino 创建服务器映像然后将服务器恢复到该映像的方法,瞧,模板错误消失了。我不知道为什么会这样,但它确实对我有用,所以我没有抱怨,我花了大部分时间试图解决这个问题:)

    【讨论】:

      【解决方案4】:

      重启gunicorn服务解决了我的问题:

      sudo systemctl restart YOUR_GUNICORN.service

      确保您正在重新启动 right gunicorn 服务。我快把自己逼疯了,然后我意识到我重新启动了错误的服务。你也可以尝试restartingrestart nginx,但这不是必须的:sudo systemctl restart nginx

      【讨论】:

        猜你喜欢
        • 2011-09-29
        • 2020-10-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多