Django - 包含的urlconf没有任何模式

64 投票
15 回答
81883 浏览
提问于 2025-04-15 23:46

我的网站之前一直正常运行,但突然出现了一个错误,内容是:

在 / 的位置出现了 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呢?

撰写回答