这是我项目的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()),
)
它有效,但我只是想知道为什么前者不起作用?
答案 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