Urls.py说我的视图没有定义(基于类的视图)

时间:2015-05-06 20:35:59

标签: django django-urls django-class-based-views

这是我项目的urls.py:

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

urlpatterns = [
    url(r'^CMS/', include('CMSApp.urls')),
    url(r'^admin/', include(admin.site.urls)),
]

这是我的app(CMSApp)的urls.py:

from django.conf.urls import patterns, url

urlpatterns = patterns(
        'CMSApp.views',
        url(r'^users$', user_list.as_view()),
        url(r'^users/(?P<pk>[0-9]+)$', user_detail.as_view()),
)

当我去

CMS/users

它给我一个名称错误,说

name 'user_list' is not defined

知道为什么吗?

当我这样做时

from CMSApp import views

urlpatterns = patterns(
        '',
        url(r'^users$', views.user_list.as_view()),
)

它有效,但我只是想知道为什么前者不起作用?

2 个答案:

答案 0 :(得分:1)

您必须导入

from CMSApp.views import user_list

否则django将不知道user_list已定义。

如果你只是使用user_list而没有明确地导入它,python会认为它是一个局部变量并返回NameError。 在views.py中定义user_list后,您必须明确告诉python在那里搜索它。

答案 1 :(得分:1)

您似乎正在为您的项目使用Django 1.8;您在1.8中删除了您尝试使用的行为,如此处所述:https://docs.djangoproject.com/en/1.8/releases/1.8/#django-conf-urls-patterns