2014-09-08 12 views
20

Ich folge dem Tutorial auf der Django-Website, um eine einfache Umfrage-App zu erstellen. Django kann jedoch "//127.0.0.1:8000/polls" nicht auflösen, obwohl ich die Regex in mySite/urls.py definiert habe. Ich mache das in einem virtualenv, mit dem neuesten Django (1.7) installiert.Seite nicht gefunden 404 auf Django Website?

mySite/urls.py:

from django.conf.urls import patterns, include, url 
from django.contrib import admin 

urlpatterns = patterns('', 
url(r'^admin/', include(admin.site.urls)), 
url(r'^polls/', include('polls.urls')), 
) 

mySite/Umfragen/urls.py:

from django.conf.urls import patterns, url 
from polls import views 

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

mySite/Umfragen/views.py:

from django.shortcuts import render 
from django.http import HttpResponse 
def index(request): 
    return HttpResponse("Hello, world. You're at the polls index.") 

mySite/Einstellungen .py:

... 
INSTALLED_APPS = (
'django.contrib.admin', 
'django.contrib.auth', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.messages', 
'django.contrib.staticfiles', 
'polls', 
) 
    .... 
ROOT_URLCONF = 'mySite.urls' 

Der Fehler Ich erhalte:

Using the URLconf defined in mySite.urls, Django tried these URL patterns, in this order: ^admin/ 
The current URL, polls, didn't match any of these. 
+1

sieht aus wie Sie nicht 'polls' Paket in der Liste der' INSTALLED_APPS' ebenfalls enthalten haben, stellen Sie sicher, dass Sie eine leere haben '__init __ py' in der Umfrage-Paket. – karthikr

+0

Ich habe, sehe meine Bearbeitungen. – jerryh91

+0

Was ist, wenn du 'urlpatterns = [url (r '^ $', ansichten.index, name = 'index'),]' in then'polls/urls.py' anstatt deiner Version von 'urlpatterns' definierst? – alecxe

Antwort

51

Ich hatte das gleiche Problem.

Es stellt sich heraus, dass ich wegen der mehreren Verzeichnisse namens "mysite" verwirrt war.

Ich habe fälschlicherweise eine urls.py-Datei im Stammverzeichnis "mysite" (enthält "manage.py") erstellt und dann den Code von der Website eingefügt.

Um es zu korrigieren, löschte ich diese Datei, ging in das Verzeichnis mysite/mysite (das "settings.py" enthält), modifizierte die vorhandene Datei "urls.py" und ersetzte den Code durch den Lernprogrammcode.

Kurz gesagt, stellen Sie sicher, dass sich Ihre urls.py-Datei im richtigen Verzeichnis befindet.

+3

Ich habe das selbe gemacht wie du .. falsches Verzeichnis. Vielen Dank! –

3

Sie zu http://yourdomain.com/ zugreifen, und Sie haben keine URL für „/“ definiert.

Sie haben zwei Möglichkeiten:

  1. Wenn Sie Sie auf der Indexseite Ihrer Umfragen Anwendung zugreifen wollen, müssen Sie die URL eingeben: yourdomain.com/polls

  2. Sie können auch ändern Sie mySite/urls.py Datei für den Zugriff von nur yourdomain.com

    from django.conf.urls import patterns, include, url 
    
    from django.contrib import admin 
    urlpatterns = patterns('', 
    
    url(r'^admin/', include(admin.site.urls)), 
    
    url(r'^$', include('polls.urls')), 
    
    ) 
    
8

Django un in der Lage, 127.0.0.1:8000/polls zu lösen, weil URL-Konfiguration als r'^polls/' definiert ist.

Übliche Abhilfe:

mySite/urls.py:

from django.conf.urls import patterns, include, url 
from django.contrib import admin 

urlpatterns = patterns('', 
url(r'^admin/', include(admin.site.urls)), 
url(r'^polls/', include('polls.urls')), 
) 

Hinweis: Wenn Django Begegnungen include(), es hackt, was Teil der URL abgestimmt bis zu diesem Punkt und sendet die verbleibende Zeichenfolge an den eingeschlossenen URLconf zur weiteren Verarbeitung.

mySite/Umfragen/urls.py:

from django.conf.urls import patterns, url 
from polls import views 

urlpatterns = patterns('polls.views', 
url(r'^$', 'index', name='index'), 
) 

Hinweis: Statt dass in urlpatterns für jeden Eintrag einzutippen, können Sie das erste Argument auf die Muster() Funktion verwenden, um anzugeben, ein Präfix, das auf jede Ansichtsfunktion angewendet wird.

Antwort Wenn

Wenn Sie 127.0.0.1:8000/pollsHinweis zugreifen wollen: ohne slash

Verwendung Ansicht basiert url

url(r'^polls', 'polls.views.index', name='index'), 

So, jetzt nachlauf können Sie 127.0.0.1:8000/polls zugreifen, ohne Slash am Ende.

+0

Sie haben einen Fehler, Sie konfigurieren mySite/Umfragen/urls.py Datei zweimal. – javidazac

+1

@javidazac ah ..! jetzt behoben –

1

Je nachdem, wo Sie Ihre ROOT urls.py setzen, setzen Sie Ihre ROOT_URLCONFIG entsprechend, wenn Sie es in Ihrem äußersten Ordner mit manage.py haben, dann ist "URLs" in Ordnung. wenn Sie es im Ordner someother dann müssen Sie für die Antwort auf jerryh91

Für mehr Informationen „.urls“

Kredit zu tun, wie es funktioniert, überprüfen How Django processes a request

0

Eigentlich ist das Problem, dass Sie ist nicht bemerkt, dass mysite/urls.py und umfragen/urls.py sind zwei verschiedene Dateien und Sie änderten Umfragen/urls.py anstelle von mysite/urls.py in die Urls.py Datei in ... mysite \ mysite-Ordner.

2

Um die Antwort klar für Anfänger, die durch Befolgen der Anleitung dieses Problem hat zu machen, ist das Projekt-Stamm URLconf das in dem gleichen Ordner wie settings.py das ist:

mysite/mysite/urls.py 

So stellen Sie sicher Import

' einschließen'. Der Code sieht so aus:

from django.conf.urls import include, url 
from django.contrib import admin 

urlpatterns = [ 
    url(r'^admin/', admin.site.urls), 
    url(r'^polls/', include('polls.urls')), 
] 

So in mysite/mysite/settings.py:

Die Linie sein soll:

ROOT_URLCONF = 'mysite.urls'

Sie don‘ t müssen Sie eine neue neue root URLconf erstellen.

+0

danke Mann, ich noch 1 Stunde mit diesem Fehler –

1

Sie legen den urls.py-Ordner in den äußeren MySite-Ordner, Sie sollen ihn in den inneren Ordner einfügen, also nicht mySite/urls.py, sondern mySite/mySite/urls.py:

lief in den gleichen Fehler, wenn ich das Tutorial

tat
0

In meinem Fall war es ein dumm Fehler. Ich wollte das Plugin django-tinymce integrieren und testen. So nach this Guide, habe ich den Schritt 3 und exportiert die Variable in den Pfad. Da der Server wieder runned, erhielt ich den gefundenen Fehler nicht, die Meldung zeigt:

die URLconf in testtinymce.urls definiert verwenden, versuchte Django diese URL Muster, in dieser Reihenfolge: ....

Aber ich weiß nicht, was genau es war, bis ich

läuft unset DJANGO_SETTINGS_MODULE in Terminal die Variable DJANGO_SETTINGS_MODULE erinnerte Export mein Problem gelöst. Hoffe, dass es auch jemandem hilft.

0

Fügen Sie die folgende Zeile in Mysite/urls.py

url(r'^$', views.index, name='index'), 

und überprüfen. Wenn Sie Ihr Projekt korrekt erstellt haben, sollte es funktionieren. Sonst könnte etwas wie oben passiert sein, wenn mehr als eine Datei so durcheinander ist.

0

2017-10-05_12: 03 ~/mysite/mysite
$ vi urls.py 2017-10-05_12: 04 ~/mysite/mysite
$ cd ../ .. 2017-10- 05_12: 04 ~
$ mv mysite SENSIBLE_NAME_DJANGO_ROOT

0
from django.conf.urls import include, url 
from django.contrib import admin 
from polls import views 

urlpatterns = [ 
    url(r'^admin/', admin.site.urls), 
    url(r'^polls/', include('polls.urls', namespace='polls')), 
    url(r'^$', views.index, name='index'), 
] 
+0

Das hat bei mir funktioniert. –

+0

Wie funktioniert für Sie? erklären Sie im Detail. https://stackoverflow.com/help/how-to-answer – 151291

+0

In der site1/urls.py Datei hinzugefügt "von Umfragen import Ansichten" und in URLListe hinzugefügt URL (r '^ $', ansichten.index, name = 'index'), –