2

我正在运行Reverse for 'home' with arguments '()' and keyword arguments '{}' not found.对于不带参数且名称为模板中带有和不带引号的视图,会出现这种情况。它只发生在我的生产服务器上,而不是我的开发环境。两者都运行Django 1.4。Django在生产中的反向URL中断

我有我的顶级urls.py中无参数视图的以下条目。

url(r'^course_catalog/', include('course_catalog.urls')), 

course_catalog/urls.py

urlpatterns = patterns('course_catalog.views', 
    url(r'^$', 'index', name="home"), 
    ... 

我也有一对夫妇的模板

<a href="{% url home %}"> 

我也是在manage.py壳试过这种下列内容:

>>> from django.core.urlresolvers import reverse 
>>> reverse('home') 
'/course_catalog/' 

所以它似乎只发生在服务模板或什么的时候。 顺便说一下,如果我浏览到URL,视图本身就可以工作。

我真的不知道该在哪里看这一点。

任何想法可能导致这种情况发生?谢谢!

+0

WSGI部署不能影响这个吗? (不同的Python路径比壳,脚本别名路径,...) – che

+0

我想我已经正确设置的东西,因为如果我注释掉URL查找,网站将加载。但是我对WSGI和相关技术的经验很少,所以我错了!什么样的设置会给他们不同的路径? –

+0

我认为当你运行manage.py shell时,你的当前目录是项目dir,这意味着Python会找到你的WSGI Python路径设置中可能无法发现的模块。这可能与你所经历的事情有关,也可能不会。我尝试的另一件事实际上是通过'django.template.loader.render_to_string'在您的python shell中渲染模板。 – che

回答

1

反向的“带参数的”家“”“()”

好像你在一个没有{% load url from future %}模板做{% url 'home' %}。这将解释为什么django双单引号''home''。就好像你在做reverse("'home'")

+0

糟糕,我编辑了我的问题以反映更改在模板行中,但忘记更新错误。它显示我现在得到的实际错误。 –

+0

我原来是这样做的,并且正在使用引号,但我放弃了它,并且为了简化事情并找到错误而返回1.4。 –