NameError name' Views'没有定义

时间:2016-07-15 20:21:03

标签: django python-2.7 django-views

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

运行服务器后出现错误&#34; NameError:name&#39; views&#39;未定义&#34;

任何帮助??

3 个答案:

答案 0 :(得分:2)

您没有导入自己的观点。

尝试将此添加到您的urls.py

from . import views

或者,如果您要从特定应用导入它们,请尝试使用应用名称

替换.

答案 1 :(得分:0)

我注意到的第一件事是import *,意识到这会导致其他开发人员阅读脚本时出现混乱。 Python有methodology坚持explicit is better than implicit。在这个术语中,您应该明确指出要导入的内容。

from django.conf.urls import url, patterns, include
from django.contrib import admin
from django.views.generic import TemplateView
from collection import views as collection_views

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

这里不是从集合中导入所有内容而是导入您的视图并将它们分配给变量。然后在URL定义中使用该变量。

答案 2 :(得分:-1)

请务必导入您的观看次数 指定其位置以及要在urls.py中导入的视图中的方法。

from . collection import *

(上面的行表示从当前位置找到collection.py并导入其中的所有内容)

快乐的编码!