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

时间:2010-06-10 02:03:15

标签: python django

之前正在工作的我的网站突然开始打破错误

“在/处不正确地配置 包含的urlconf resume.urls中没有任何模式“

项目基础称为简历。在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,以便识别网址。)这是ajax.py。

from django.conf.urls.defaults import *

urlpatterns = patterns('',
    (r'^star/(?P<object_id>\d+)$', 'resume.students.ajax-calls.star'),
)

任何人都知道什么是错的?这让我发疯了。

谢谢,

8 个答案:

答案 0 :(得分:55)

TL; DR:您可能需要使用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解决了问题:这推迟了网址的反转,直到在运行时首次需要它为止。

道德:如果您需要在应用程序启动前撤消,请始终使用reverse_lazy

答案 1 :(得分:27)

检查模式是否包含指向不存在的模块或没有urlpatterns成员的模块的include语句。我看到你有include('urls.ajax')可能不正确。它应该是ajax.urls吗?

答案 2 :(得分:2)

在我的情况下,我在部署期间遇到此错误。 Apache一直给我#34; AH01630:服务器配置拒绝了客户端&#34;错误。 这表明apache配置有问题。为了帮助解决问题,当我看到这个错误时,我在settings.py中打开了Debug = True。

最后,我不得不在apache config中的静态文件配置中添加一个新指令。当静态文件无法访问且django设置中的Debug设置为true时,此错误以某种方式被触发。

答案 3 :(得分:1)

尝试使用RedirectView和url中的参数进行反向(和reverse_lazy)时出现此错误。违规代码如下所示:

from django.views.generic import RedirectView
from django.core.urlresolvers import reverse
url(r'^(?P<location_id>\d+)/$', RedirectView.as_view(url=reverse('dailyreport_location', args=['%(location_id)s', ]))),

修复是在urlpatterns中使用此url:

from django.views.generic import RedirectView
url(r'^(?P<location_id>\d+)/$', RedirectView.as_view(url='/statistics/dailyreport/%(location_id)s/')),

ANSWER :修复程序,您仍然可以使用网址格式的名称:

from django.core.urlresolvers import reverse
from django.http import HttpResponseRedirect
urlpatterns = patterns('',
    ....
    url(r'^(?P<location_id>\d+)/$', lambda x, location_id: HttpResponseRedirect(reverse('dailyreport_location', args=[location_id])), name='location_stats_redirect'),
    ....
)

答案 4 :(得分:0)

就我而言,我遇到以下错误:

  

配置不正确:所包含的URLconf中似乎没有任何模式。如果您在文件中看到有效的模式,则说明问题可能是由循环导入引起的。

URL模式有效,但是问题是由错字引起的导入错误。我键入的是restframework而不是rest_framework

答案 5 :(得分:0)

注意:由于某种原因,对我来说,保存另一个文件后,该错误也消失了。因此,第一次出现错误时,我保存了一个文件,其中在forms.py文件中指定了错误的小部件:

extra_field = forms.CharField(widget=forms.TextField())

代替

extra_field = forms.CharField(widget=forms.TextInput()) 

将其更改为正确的版本(TextInput)并保存forms.py文件后,该错误仍在我的控制台中显示。保存另一个文件(例如models.py)后,错误消失了。

答案 6 :(得分:0)

在您的应用中检查正确的变量名(如果为“

  

urlpatterns

”或其他任何内容。 改名对我有帮助

答案 7 :(得分:0)

如果发现有任何卸载的模块,请在views.py中检查导入的模块,然后从views.py文件中删除该模块。 对我来说是修复