生产django服务器在渲染时抛出“NoReverseMatch”,开发工作

时间:2010-12-04 19:14:16

标签: django django-templates django-views

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>

在我的views.py

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

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

4 个答案:

答案 0 :(得分:4)

可能是您在其他地方出现错误,这会阻止您的某个视图被导入 - 可能是您的生产服务器上缺少依赖项。反向网址功能的工作原理是导入您的所有视图,因此如果因任何原因无法导入其中任何视图,您将看到NoReverseMatch错误。

答案 1 :(得分:1)

尝试:

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

并在模板上:

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

答案 2 :(得分:0)

我遇到了同样的事情,所以我尝试了Paperino创建服务器图像的方法,然后将服务器恢复到该图像,瞧,模板错误就消失了。我不知道为什么会这样,但它确实适合我,所以我没有抱怨,一天大部分时间都在努力想出这一点:)

答案 3 :(得分:0)

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

sudo systemctl restart YOUR_GUNICORN.service

确保您正在重新启动正确的枪械服务。我当时疯了,然后才意识到我正在重新启动错误的服务。您也可以尝试重新启动重新启动nginx,但这不是必需的:sudo systemctl restart nginx