Django反向URL在生产中中断
我遇到了参数为“()”且关键字参数为“{}”的“home”的Django反向URL在生产中中断,django,url,django-templates,django-views,production-environment,Django,Url,Django Templates,Django Views,Production Environment,我遇到了参数为“()”且关键字参数为“{}”的“home”的反转。对于不带参数且已命名的视图,在模板中有引号和无引号时都会出现这种情况。它只发生在我的生产服务器上,而不是在我的开发环境中。两者都运行Django 1.4 在我的顶层urls.py中有以下无参数视图条目 url(r'^course_catalog/', include('course_catalog.urls')), 在课程目录/url.py中: urlpatterns = patterns('course_catalog.vie
反转。
对于不带参数且已命名的视图,在模板中有引号和无引号时都会出现这种情况。它只发生在我的生产服务器上,而不是在我的开发环境中。两者都运行Django 1.4
在我的顶层urls.py
中有以下无参数视图条目
url(r'^course_catalog/', include('course_catalog.urls')),
在课程目录/url.py
中:
urlpatterns = patterns('course_catalog.views',
url(r'^$', 'index', name="home"),
...
我还有以下几个模板
<a href="{% url home %}">
因此,它似乎只有在提供模板时才会发生。
顺便说一下,如果我导航到URL,视图本身就可以工作
我真的不知道从哪里看这一点
知道是什么导致了这一切吗?谢谢
带参数“()”的“主”的反转
似乎您在一个没有
{%load url from future%}
的模板中执行{%url'home%}
。这就解释了为什么django双单引号“home”
。例如,如果您正在执行反向(“home”)
WSGI部署不会影响这一点吗?(不同于shell中的Python路径,脚本别名路径,…)我想我已经正确设置好了,因为如果我注释掉URL查找,站点将加载。但我对WSGI和相关技术的经验很少,所以很有可能我错了!什么样的设置会为它们提供不同的路径?我认为当您运行manage.py shell时,您当前的目录是project dir,这意味着Python将在您的WSGI Python路径设置中找到可能无法发现的模块。这可能与你的经历有关,也可能与你的经历无关。我要尝试的另一件事是在python shell中通过django.template.loader.render_to_string
.Hmm实际呈现模板。以这种方式渲染模板效果良好。所以我想这暗示了路径问题?嗯,这是我现在唯一能想到的:-)你可以尝试添加import sys;sys.path.append('/path/to/project/dir')
到WSGI文件的开头。哎呀,我编辑了我的问题以反映模板行中的更改,但忘了更新错误。它显示了我现在得到的实际错误。我最初有这个错误,并使用引号,但我放弃了它,回到了straight 1.4,试图简化事情并找到错误。
>>> from django.core.urlresolvers import reverse
>>> reverse('home')
'/course_catalog/'