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的主要内容,如果未能解决你的问题,请参考以下文章