2009-07-17 9 views
1

Mein URLconf hat:Django-URL-Tag gibt falsche Werte

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

Nun, wenn ich zu http://myhost/path_to_django_app/view-item/ gehen, es funktioniert. {% url view-item %} gibt jedoch '/ view-item /' zurück. Warum macht es das?

Dieses Problem trat auf, als ich die Anwendung auf einen neuen Server verschoben habe, also vermute ich, dass etwas falsch konfiguriert sein muss, aber ich weiß nicht einmal, wo ich suchen soll.

Antwort

1

Dies kann daran liegen, dass die Variable SCRIPT_NAME nicht korrekt eingestellt ist. Das url-Tag verwendet diese Variable, um den endgültigen absoluten zurückzugebenden Pfad zu bestimmen.

Sie sollten überprüfen, was request.META['SCRIPT_NAME'] in einer Ihrer Ansichten festgelegt ist. Wenn es nicht richtig eingestellt ist, müssen Sie möglicherweise in Ihre Backend-Konfiguration schauen. Wenn Sie mod_python verwenden, müssen Sie normalerweise sicherstellen, dass django.root in der Apache-Konfiguration festgelegt ist. Überprüfen Sie die Installationsdokumentation für more info.

Wenn Sie immer noch nicht bekommen zu arbeiten, können Sie dies settings.py versuchen Sie:

FORCE_SCRIPT_NAME = '/path_to_django_app/' 
2

Den üblichen Weg, Ihren URl in django zu schreiben, ist mit einem nachgestellten ‚/‘:

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

oder:

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

Das Leben wird viel einfacher, wenn Sie dieser Konvention folgen.