2012-05-21 8 views
5

so dass ich eine django app haben, und ich besuchen Sie diese URL:django trailing slash wird nicht hinzugefügt

http://127.0.0.1:8000/stories 

und ich bekomme diese:

Request Method:  GET 

Request URL: http://127.0.0.1:8000/stories 

"stories" does not exist 

und dann ich die urls.py überprüfen und ich sehe:

#stories 
url(r'^stories/$', 
    StoryShowView.as_view(
     context_object_name='story_list', 
     template_name='accounts/viewAndAddStory.html') 
), 

und schließlich, ich schaue auf meine settins.py und ich sehe:

#appends a slash if nothing is found without a slash. 
APPEND_SLASH = True 

sollte nicht, mit der APPEND_SLASH wie oben festgelegt, die URL ohne den Schrägstrich 301 mit dem Schrägstrich auf die URL umgeleitet werden, und dann die Webseite laden?

Wenn ich mache manuell den Schrägstrich der URL hinzufügen, dann lädt die Seite wie erwartet und jeder hat etwas Tee und klopft früh aus.

UPDATE:

i auch diesen Eintrag in meinem settings.py haben:

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware', 
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'django.middleware.csrf.CsrfViewMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware', 
    'django.contrib.messages.middleware.MessageMiddleware', 
) 

UPDATE:

aus der Fehlermeldung auf der Seite, wenn ich versuche die URL zuzugreifen:

Django Version: 1.3.1

Gelöst: so okm war knallte auf das Geld, Schatz. Das Problem war meine Urls - zuunterst, ich dies hatte:

if settings.DEBUG: 
    urlpatterns += patterns('', 
     url(r'^%s(?P<path>.*)$' % settings.MEDIA_URL[1:], 
     'django.views.static.serve', 
     {'document_root': settings.MEDIA_ROOT, 'show_indexes': True}) 
    ) 

Was ich nicht hatte, wurde jedoch getan, dass die MEDIA_URL und die MEDIA_ROOT nicht eingegeben wurden, in meinem settings.py - sie waren einfach beide leere Zeichenfolgen ('')

so die url finden, dass das Finden aller URLs ich eingegeben worden war und dachte, dass sie css-Einträge waren. Ich habe die Werte für das media_root (Ordner, wo meine CSS-Dateien sind) und media_url (die URL, die ich verwendet habe, um statische Dateien anzuzeigen) eingegeben und alles war gut.

+1

Haben Sie ['django.middleware.common.CommonMiddleware'] (https://docs.djangoproject.com/en/1.4/ref/middleware/#django.middleware.common.CommonMiddleware') in Ihrer 'MIDDLEWARE_CLASSES' Einstellung? –

+0

ja, ich habe das auch dort – bharal

+0

Was ist deine Django-Version? es könnte gut sein, es auch zu überprüfen ... – FallenAngel

Antwort

9

Die "does not exist" sollte etwas wie "Page not found" sein. Daher vermute ich, dass Sie nicht mit einem normalen 404 konfrontiert sind, sondern mit einem 404, der durch eine falsch angepasste Ansicht in einer falsch konfigurierten URL-Konsole ausgelöst wurde. Zum Beispiel habe ich festgestellt, dass django.views.static.serve würde Http404('some_path does not exist') erhöhen, können Sie überprüfen, urls.py, um sicherzustellen, Ansichten wie static.serve nicht Pfad wie /stories?

Wenn es eine Übereinstimmung gibt, wird Django Suffix Slash nicht anhängen und automatisch umleiten.

Sie könnten von

überprüfen
from django.core.urlresolvers import resolve 
resolve('/stories') 

zu wissen, welche angepasst wird sehen tatsächlich.

+0

ah. Du hattest Recht! Obwohl ich * auch * einen "Seite nicht gefunden" Fehler für einige Seiten ohne den Schrägstrich erhielt, der mich abwarf. Erklärung in der Frage. – bharal

Verwandte Themen