Namensmuster können nicht importiert werden

77

Bevor ich schrieb urls.py, mein Code ... alles hat perfekt funktioniert. Jetzt habe ich Probleme - kann nicht auf meine Website gehen. "Namensmuster können nicht importiert werden"

Mein urls.pyist:

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

Sie sagten, welcher Fehler irgendwo hier ist.

Autokilled
quelle
Können Sie uns bitte den vollständigen Fehler und die Rückverfolgung zeigen?
Tim Post
3
Ich hatte das gleiche Problem, als ich der Anleitung "Schreibe deine erste Django-App" folgte. Als ich die URL-Muster von der Haupt-URL.py auf polls.urls.py verschoben habe. Das Problem wurde behoben, nachdem ich "von django.conf.urls Importmuster, einschließlich URL" mit "von django.conf.urls.defaults import *"
geändert hatte
2
Ich hatte das gleiche Problem bei der Bereitstellung auf meinem Staging-Server. Das Problem ging weg, ich habe ein Upgrade von Django 1.3.1 auf 1.4 durchgeführt, indem ich sudo pip install --upgrade django
Mike Grace am

Antworten:

28

Sie brauchen diese Importe nicht. Das einzige, was Sie in Ihrer urls.py benötigen (um zu beginnen), ist:

from django.conf.urls.defaults import *

# This two if you want to enable the Django Admin: (recommended)
from django.contrib import admin
admin.autodiscover()

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

HINWEIS: Diese Lösung war für Django <1.6 vorgesehen. Dies war eigentlich der Code, der von Django selbst generiert wurde. Für eine neuere Version siehe Jacob Humes Antwort.

juliomalegria
quelle
39
Import * gilt als schlechte Praxis
llazzaro
3
von django.conf.urls.defaults import * wird von djnago1.6
neelima
49
Jedes Mal, wenn Sie import *ein Kätzchen sterben
cs01
1
Wenn er Muster nicht explizit importieren konnte, *funktioniert die Verwendung auch nicht ...
Cerin
1
Es wird keine korrekte Antwort mehr und ein Anti-Muster (von Import *) beworben. Bitte aktualisieren Sie die Antwort entsprechend
Vasif
159

Ab Django 1.10 wurde das patternsModul entfernt (es war seit 1.8 veraltet).

Glücklicherweise sollte es eine einfache Bearbeitung sein, um den fehlerhaften Code zu entfernen, da der urlpatterns jetzt in einer einfachen alten Liste gespeichert werden sollte :

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    # ... your url patterns
]
Jacob Hume
quelle
1
aber wie kann ich das MEDIA_ROOTund MEDIA_URLan die URL-Muster anhängen
Roel
1
So fügen Sie eine Medien-URL hinzu: docs.djangoproject.com/de/1.10/howto/static-files/…
Raptor
3
Eine bessere Dokumentation und Begründung zu dieser Änderung in Django 1.8 finden Sie unter docs.djangoproject.com/de/1.10/releases/1.8/…
nealmcb
Und Sie müssen die leere URL ''an der ersten Position von entfernen urlpatterns, sonst erhalten Sie einen Regex AttributeError. Siehe stackoverflow.com/questions/34853531/…
Mr-IDE
21

Ja:

from django.conf.urls.defaults import ... # is for django 1.3
from django.conf.urls  import ...         # is for django 1.4

Ich habe dieses Problem auch getroffen.

Spikeyang
quelle
11

Das Musters-Modul wird nicht unterstützt. Meins hat damit gearbeitet.

from django.conf.urls import *
from django.contrib import admin
admin.autodiscover()

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    # ... your url patterns
]
Yatender Singh
quelle
6

Dies ist der Code, der für mich funktioniert hat. Meine Django-Version ist 1.10.4 final

from django.conf.urls import url, include

from django.contrib import admin
admin.autodiscover()

urlpatterns = [
    # Examples:
    # url(r'^$', 'blog.views.home', name='home'),
    # url(r'^blog/', include('blog.urls')),

    url(r'^admin/', include(admin.site.urls)),
]
Krishnadas PC
quelle
3

Das Mustermodul ist ab Django 1.8 nicht verfügbar. Sie müssen also Muster aus Ihrem Import entfernen und etwas Ähnliches wie das Folgende tun:

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

admin.autodiscover()

urlpatterns = [                 
    # here we are not using pattern module like in previous django versions
    url(r'^admin/', include(admin.site.urls)),
]
Aiswarya
quelle
1

Ich habe es behoben, indem ich mein Projekt direkt von GIT in Eclipse geklont habe.

Anfangs habe ich es an einer bestimmten Stelle im Dateisystem geklont und dann als vorhandenes Projekt in Eclipse importiert.

Jimmy M.
quelle
0

Scheint, als würden Sie eine veraltete Version von Django verwenden. Aktualisieren Sie einfach Django und versuchen Sie es erneut. Der folgende Befehl aktualisiert Ihre Django-Version.

pip install --upgrade django

Gihan Gamage
quelle