Django mappage d'URL - NameError: name X n'est pas définie
[Une question semblable a été posée, mais pas marqué comme réponse, ici. J'ai envisagé de poursuivre ce fil, mais le site me dit que je ne suis censé poster une réponse, donc il semble que je dois commencer un nouveau sujet.] Je suis en train de suivre cette tutoriel et je vais avoir des problèmes avec le mappage d'URL. Spécifiquement avec la partie décrite comme "Donc, la meilleure pratique est de créer un “url.py” par application et de l'inclure dans nos principaux projets url.py le fichier". Pertinentes, je l'espère, une partie de la structure de dossier, qui se pose en suivant les étapes du tutoriel à la lettre (si possible; l'utilisation de la "patrons" module a été impossible, par exemple) et à l'aide de Django 1.10 est la suivante:
myproject/
myapp/
urls.py
views.py
myproject/
urls.py
L'myproject/urls.py est comme suit:
from django.conf.urls import include, url
from django.contrib import admin
admin.autodiscover()
from myapp.views import hello
urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
url(r'^myapp/', include(myapp.urls)),
]
L'myapp/urls.py est comme suit:
from django.conf.urls import include, url
urlpatterns = [
url(r'^hello/', myapp.views.hello),
]
L'myapp/views.py est comme suit:
from django.shortcuts import render
def hello(request):
return render(request, "hello.html", {})
Toutefois, l'exécution de la " python manage.py runserver résultats dans l'erreur suivante:
url(r'^myapp/', include(myapp.urls)),
NameError: name 'myapp' is not defined
Dans INSTALLED_APPS settings.py contient 'myapp'.
Je serais reconnaissant pour les conseils sur la façon de traiter avec les NameError! [Ou des conseils que ce soit que quelqu'un pourrait considérer être utile!]
- Merci pour le commentaire. Django 1.10 semble être la "dernière version officielle", selon le site web de Django. Je pensais que c'be raisonnable pour l'installer. Je ne sais pas ce que la classe de base point de vue " sont. Je vais enquêter. Mais êtes-vous sûr que c'est la racine de l'NameError?
- Le tuto vous-même liée à l'écrit pour Django 1.6 ou une version antérieure (
admin.autodiscover()
n'a pas été nécessaire puisque Django 1.7) . Beaucoup de choses ont changé depuis, alors que je ne recommande pas de le suivre. Le officiel Django 1.10 tutoriel vous montre comment créer une application avec une url de la config qui va travailler avec Django 1.10. - Je vous remercie beaucoup. Je vais passer pour le nouveau tutoriel.
Vous devez vous connecter pour publier un commentaire.
Vous avez le
NameError
parce que vous faites référence àmyapp
dansmyproject/urls.py
mais je n'ai pas importé.L'approche typique dans Django est d'utiliser une chaîne de caractères à inclure, ce qui signifie que l'importation n'est pas nécessaire.
Puisque vous avez déplacer le
hello
modèle d'URL dansmyapp/urls.py
, vous pouvez supprimerfrom myapp.views import hello
demyproject/urls.py
.Une fois que vous avez fait le changement, vous allez obtenir une autre
NameError
dansmyapp/urls.py
. Dans ce cas, une approche courante consiste à utiliser un par rapport à l'importation pour l'application de points de vue.Assurez-vous que vous avez importé des modules suivants à
urls.py
.Dans Django 2.1.7 voici l'url par défaut .py fichier
nous avons donc besoin d'ajouter cette ligne ainsi
de django.conf.url import url
dans django 2.0
l'utilisation de ces