Django - 包含的urlconf没有任何模式
我的网站之前一直正常运行,但突然出现了一个错误,内容是:
在 / 的位置出现了 ImproperlyConfigured 错误,包含的 urlconf resume.urls 里面没有任何模式。
我的项目基础叫做 resume。在 settings.py 文件中,我已经设置了:
ROOT_URLCONF = 'resume.urls'
这是我的 resume.urls 文件,它位于项目的根目录。
from django.conf.urls.defaults import *
# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
# Example:
# (r'^resume/', include('resume.foo.urls')),
# Uncomment the admin/doc line below and add 'django.contrib.admindocs'
# to INSTALLED_APPS to enable admin documentation:
(r'^admin/doc/', include('django.contrib.admindocs.urls')),
# Uncomment the next line to enable the admin:
(r'^admin/', include(admin.site.urls)),
(r'^accounts/login/$', 'django.contrib.auth.views.login'),
#(r'^employer/', include(students.urls)),
(r'^ajax/', include('urls.ajax')),
(r'^student/', include('students.urls')),
(r'^club/(?P<object_id>\d+)/$', 'resume.students.views.club_detail'),
(r'^company/(?P<object_id>\d+)/$', 'resume.students.views.company_detail'),
(r'^program/(?P<object_id>\d+)/$', 'resume.students.views.program_detail'),
(r'^course/(?P<object_id>\d+)/$', 'resume.students.views.course_detail'),
(r'^career/(?P<object_id>\d+)/$', 'resume.students.views.career_detail'),
(r'^site_media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': 'C:/code/django/resume/media'}),
)
我有一个名为 urls 的文件夹,里面有一个文件叫 ajax.py。(我还在同一个文件夹里创建了一个空的 init.py 文件,这样 urls 才能被识别。)这是 ajax.py 的内容。
from django.conf.urls.defaults import *
urlpatterns = patterns('',
(r'^star/(?P<object_id>\d+)$', 'resume.students.ajax-calls.star'),
)
有人知道问题出在哪里吗?这让我很头疼。
谢谢,
15 个回答
12
检查一下你应用里变量的名字,看看是不是 "
urlpatterns
" 或者其他什么名字。改正这个名字对我有帮助。
101
总结一下:你可能需要用 reverse_lazy()
而不是 reverse()
如果你的 urls.py
文件里引入了一个基于类的视图,而这个视图使用了 reverse()
,那么你会遇到这个错误;用 reverse_lazy()
就能解决这个问题。
对我来说,错误信息是:
包含的 urlconf project.urls 里没有任何模式
这个错误出现的原因是:
project.urls
引入了app.urls
app.urls
引入了app.views
app.views
里有一个使用了reverse
的基于类的视图reverse
又引入了project.urls
,导致了循环依赖。
使用 reverse_lazy
代替 reverse
解决了这个问题:这样就把 URL 的反转操作推迟到运行时第一次需要的时候。
教训:如果你需要在应用启动之前进行 URL 反转,记得总是使用 reverse_lazy
。
34
检查一下你的代码中是否有包含那些指向不存在的模块,或者没有urlpatterns
这个成员的模块的语句。我注意到你有一个include('urls.ajax')
,这可能不太对。是不是应该写成ajax.urls
呢?