2016-07-15 14 views
1
definiert
from django.conf.urls import url, patterns, include 
from django.contrib import admin 
from django.views.generic import TemplateView 
from collection import * 


#from collection.views import index,thing_detail,edit_thing 

urlpatterns = [ 
     url(r'^$', views.index, name='home'), 
     url(r'^about/$',TemplateView.as_view(template_name='about.html'),name='about'), 
     url(r'^contact/$',TemplateView.as_view(template_name='contact.html'),name='contact'), 
     url(r'^things/(?P<slug>[-\w]+)/$', 'views.thing_detail' ,name='thing_detail'), 
     url(r'^things/(?P<slug>[-\w]+)/edit/$', 'views.edit_thing',name='edit_thing'), 
     url(r'^admin/', include(admin.site.urls)), 
] 

Nach dem Ausführen des Server gibt es einen Fehler „Nameerror: name‚Ansichten‘ist nicht definiert“Nameerror name ‚Ansichten‘ nicht

Jede Hilfe ??

+0

Sie importieren nicht Ihre eigenen Ansichten – ritlew

+0

Für welche bestimmte 'Ansicht' haben Sie 'NameError', und wenn kann ich vorschlagen, Änderung von Sammlungsimport *' nach 'von Sammlungsimportansichten' wenn 'Sammlung' ist Ihr 'app' Name – PetarP

+0

Importieren Sie zuerst Ihre Ansichten explizit. Vermeiden Sie auch die Verwendung von string in URLs (''views.edit_thing''), da dies eine Verwarnungswarnung auslösen würde und auch keine gute Gewohnheit ist. Und schließlich benutze die aufrufbare Ansicht selbst 'edit_thing' anstatt' views.edit_thing'. – kapilsdv

Antwort

2

Sie importieren keine eigenen Ansichten.

Versuchen, diese zu Ihrem urls.py:

from . import views 

Oder, wenn man sie aus einer bestimmten App importieren, versuchen . mit dem Namen App ersetzt

+0

Dies wird wahrscheinlich das Problem lösen, aber relative Importe sind keine gute Idee. http://stackoverflow.com/questions/4209641/absolute-vs-explicit-relative-import-of-python-modul – Gocht

+0

Mit wie URLs arbeiten in Django, ich fühle mich wie relative Importe wird niemanden verwechseln – ritlew

+0

[Explicit is better als implizit.] (http://c2.com/cgi/wiki?PythonPhilosophy) – Gocht

0

Das erste, was ich bemerke das import * ist, zu erkennen, dass Dies kann Verwirrung für andere Entwickler verursachen, die Ihre Skripte lesen. Python hat eine , die darauf besteht, dass explicit is better than implicit. Was in diesem Szenario bedeutet, dass Sie explizit angeben sollten, was Sie importieren.

Hier anstatt alles aus der Sammlung zu importieren, importiere ich nur Ihre Ansichten und weise sie einer Variablen zu. Dann benutze diese Variable in den URL-Definitionen.

-1

Stellen Sie sicher, dass Sie Ihre Ansichten unter importieren. Geben Sie dabei ihren Speicherort und die Methoden in der Ansicht an, die in Ihre URLs.py importiert werden sollen.

from . collection import * 

(Linie bedeutet in erster Linie von der aktuellen Position collection.py finden und alles importieren drauf)

Glücklich Codierung!