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.
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.
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.
Vous accédez à http://votredomaine.com/ et vous n'avez aucune URL définie pour "/".
Vous avez deux options:
Si vous souhaitez accéder à la page d'index de votre application de sondages, vous devez entrer l'URL: votredomaine.com/polls.
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')),
)
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.
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
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
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'),
]
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
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.
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.
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.