web-dev-qa-db-fra.com

Page non trouvée 404 sur le site Django?

Je suis le tutoriel sur le site de Django pour créer une application de sondage simple. Cependant, Django est incapable de résoudre "//127.0.0.1:8000/polls", même si j'ai défini l'expression régulière dans mySite/urls.py. Je le fais dans une virtualenv, avec la dernière version de Django (1.7) installée. 

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/polls/urls.py:

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

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

mySite/polls/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/settings.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'

L'erreur que j'obtiens:

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.
30
jerryh91

J'ai eu le même problème. 

Il s'avère que j'ai été dérouté à cause des multiples répertoires nommés "mysite". 

J'ai créé à tort un fichier urls.py dans le répertoire racine "mysite" (qui contient "manage.py"), puis collé dans le code du site Web. 

Pour le corriger, j'ai supprimé ce fichier, suis entré dans le répertoire mysite/mysite (qui contient "settings.py"), modifié le fichier "urls.py" existant et remplacé le code par le code du didacticiel.

En un mot, assurez-vous que votre fichier urls.py se trouve dans le bon répertoire.

65
ZakJ

Django n'a pas pu résoudre 127.0.0.1:8000/polls car la configuration de l'URL a été définie comme r'^polls/'

Contournement habituel:

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')),
)

Remarque: Chaque fois que Django rencontre include (), il supprime toute partie de l'URL correspondante jusqu'à ce point et envoie la chaîne restante à la URLconf incluse pour un traitement ultérieur.

mySite/polls/urls.py:

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

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

Remarque: Au lieu de saisir cette valeur pour chaque entrée dans urlpatterns, vous pouvez utiliser le premier argument de la fonction patterns () pour spécifier un préfixe à appliquer à chaque fonction d'affichage.

Réponse si

Si vous souhaitez accéder à 127.0.0.1:8000/polls _ Remarque: sans barre oblique 

utiliser l'URL basée sur les vues

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

Alors maintenant, vous pouvez accéder à 127.0.0.1:8000/polls sans slash final.

8
Raja Simon

Vous accédez à http://votredomaine.com/ et vous n'avez aucune URL définie pour "/".

Vous avez deux options:

  1. Si vous souhaitez accéder à la page d'index de votre application de sondages, vous devez entrer l'URL: votredomaine.com/polls.

  2. Vous pouvez également modifier votre fichier mySite/urls.py pour accéder uniquement à votredomaine.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')),
    
    )
    
3
Emily

Pour que la réponse soit claire pour les débutants confrontés à ce problème en suivant le tutoriel, la racine du projet URLconf est celle du même dossier que settings.py, à savoir:

 mysite/mysite/urls.py

Assurez-vous juste que l'importation "include". Le code ressemble à:

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')),
]

Alors dans mysite/mysite/settings.py:

La ligne devrait être:

ROOT_URLCONF = 'mysite.urls'

Vous n'avez pas besoin de créer une nouvelle URLconf racine. 

2
jwndev

Vous placez le dossier urls.py dans le dossier MySite externe, vous êtes censé le placer dans le dossier interne de manière à ce que ce ne soit pas mySite/urls.py, mais mySite/mySite/urls.py:

couru dans la même erreur quand j'ai fait le tutoriel

1
duyinhao

Selon l'endroit où vous placez votre urls.py ROOT, vous définissez votre ROOT_URLCONFIG en conséquence. Si vous l'avez dans votre dossier le plus externe contenant manage.py, alors "urls" est ok. si vous l'avez dans un autre dossier, alors vous devez faire ". Urls"

Crédit pour la réponse à jerryh91

Pour plus d'informations sur son fonctionnement, consultez Comment Django traite une requête

1
javidazac

Un autre moyen d'accéder à 127.0.0.1:8000/polls serait de rediriger le navigateur lors de l'accès à 127.0.0.1:8000. Cela se fait en éditant .../mysite/mysite/urls.py comme suit:

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'),
]
1
Muhammad Yousaf

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
user50619

Dans mon cas, c'était une erreur {stupide. Je voulais intégrer le plugin Django-tinymce et le tester. Donc, en suivant this guide, j’ai fait l’étape 3 et exporté la variable dans le chemin. Lorsque le serveur a redémarré, j'ai reçu l'erreur introuvable, affichant le message suivant: 

En utilisant l'URLconf défini dans testtinymce.urls, Django a essayé ces URL modèles, dans cet ordre: .... 

Mais je ne savais pas ce que c'était exactement, jusqu'à ce que je me souvienne d'avoir exporté la variable Django_SETTINGS_MODULE

l'exécution de unset Django_SETTINGS_MODULE dans le terminal a résolu mon problème. J'espère que ça aide aussi quelqu'un.

0
pbalazek

Ajoutez la ligne ci-dessous dans votre Mysite/urls.py

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

et vérifie. Si vous avez créé votre projet correctement, cela devrait fonctionner. Sinon, quelque chose comme ci-dessus aurait pu avoir plus d'un fichier aussi confus.

0
srilekha.bikki

En fait, le problème est que vous n'avez pas remarqué cela mysite/urls.py et polls/urls.py sont deux fichiers différents et vous avez modifié polls/urls.py au lieu de mettre mysite/urls.py le fichier urls.py dans le dossier ... mysite\mysite.

0
Josephat Mwanzia