django 生产服务器中的 NoReverseMatch

Posted

技术标签:

【中文标题】django 生产服务器中的 NoReverseMatch【英文标题】:NoReverseMatch in django production server 【发布时间】:2011-09-29 18:26:52 【问题描述】:

该项目在开发服务器中运行良好,但是当我尝试在生产 sv(Gunicorn + nginx) 中使用它时,出现 NoReverseMatch 错误。查了好几遍代码都没有发现错误。

urls.py:

from django.conf.urls.defaults import patterns, include, url
from django.conf import settings

urlpatterns = patterns('',
    (r'^obras/', include('obras.urls')),
)

obras urls.py:

from django.conf.urls.defaults import *
from obras import views

urlpatterns = patterns('',
    url(r'^presobra/$', views.pres_obra, name='pres_obra'), 
)

错误信息:

请求网址:http://127.0.0.1:8888/admin/

Python 路径: ['/srv/www/antingprojects.com.ar/gobras', ... ']

异常值: 渲染时捕获 NoReverseMatch:“pres_obra”的反向参数“()”和关键字参数“”未找到。

模板错误

在模板 /srv/www/antingprojects.com.ar/gobras/templates/admin/index.html 中,第 75 行出错 渲染时捕获 NoReverseMatch:“pres_obra”的反向参数“()”和关键字参数“”未找到。

75      <li><a href=% url pres_obra %>Presupuestos-Obras</a></li>

settings.py:

import os.path
PROJECT_DIR = os.path.dirname(__file__)
ROOT_URLCONF = 'gobras.urls'

项目结构:

-gobras
--obras
--media

【问题讨论】:

请贴出实际的错误信息。 我遇到了类似的错误;一件奇怪的事情是,如果我使用 gunicorn_django,它可以工作,但如果我使用 gunicorn,我会收到此错误。我的 python 路径还包括我的应用程序,所以我认为这不是路径问题。 【参考方案1】:

尝试添加:from obras.urls import urlpatterns as obras_urlpatterns 到 urls.py。我敢打赌它失败了,问题是生产中的 PYTHONPATH 没有找到 obras 应用程序。确保设置正确。

【讨论】:

以上是关于django 生产服务器中的 NoReverseMatch的主要内容,如果未能解决你的问题,请参考以下文章

django 生产服务器中的静态文件

生产环境中的 django 和 mysql 设置

Django URL 标记不起作用 - NoReverseMatch

设置Django生产环境系统重启后的自动启动项

Django项目:生产服务器,使用python 3

Django Admin 样式表不会加载到生产服务器上