2009-07-17 22 views
1

我的URL配置有:Django的URL标签提供了错误的价值观

url(r'^view-item$', 'appname.views.view_item', name='view-item'), 

现在,如果我去http://myhost/path_to_django_app/view-item/,它的工作原理。但是,{% url view-item %}返回'/ view-item /'。它为什么这样做?

当我将应用程序移至新服务器时发生了此问题,因此我猜测必须配置错误的东西,但我甚至不知道在哪里寻找。

回答

1

这可能是由于SCRIPT_NAME变量设置不正确。 url标签将使用此变量组成要返回的最终绝对路径。

您应该在您的某个视图中检查request.META['SCRIPT_NAME']的设置。如果设置不正确,则可能需要查看后端配置。如果您使用的是mod_python,通常需要确保在apache配置中设置了django.root。检查more info的安装文档。

如果您仍然无法得到它的工作,你可以尝试添加这settings.py中:

FORCE_SCRIPT_NAME = '/path_to_django_app/' 
2

通常的方式写在Django您的网址是末尾的“/”:

url(r'^view-item/$', 'appname.views.view_item', name='view-item') 

或:如果你按照这个约定

url(r'^view-item/', include('view.urls')), 

生活会容易得多。