【问题标题】:Django - The included urlconf doesn't have any patterns in itDjango - 包含的 urlconf 中没有任何模式
【发布时间】:2011-03-01 23:17:01
【问题描述】:

我的网站,以前可以正常工作,突然开始出现错误

不正确配置在 / 包含的 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 以便识别 url。)这是 ajax.py。

from django.conf.urls.defaults import *

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

有人知道怎么回事吗?这让我发疯了。

谢谢,

【问题讨论】:

    标签: python django


    【解决方案1】:

    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 解决了这个问题:这推迟了url 的反转,直到在运行时第一次需要它。

    道德:如果您需要在应用启动前反转,请始终使用reverse_lazy

    【讨论】:

    • 我在 Django 1.6.5 中仍然遇到这个问题。当我将此行添加到 DeleteView 时发生这种情况:success_url = reverse_lazy('client_list') 并在我硬编码 URL 时停止:(
    • 这是给我的!如果应用程序尝试加载 URLConf,则不应使用反向,因为反向需要查看 URLConf。
    • 值得指出的是,如果您将输出传递给 @login_required(login_url=),则需要 reverse_lazy。我认为这是因为您在应用启动之前正在倒车。
    【解决方案2】:

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

    【讨论】:

    • 我同意这可能是问题所在。
    • 我编辑了我的原始帖子以包含来自 ajax.py 的代码。我还尝试将包含的内容注释掉 - 仍然没有骰子。
    • 您不能在同一个包中拥有urls.py 和名为urls 的目录。如果你想拥有resume.urlsresume.urls.ajax,那么你需要将urls.py的所有内容移动到urls/__init__.py并删除urls.py文件。
    • 哦哇...好吧,这很有道理。进行了您建议的更改,效果很好。感谢您的帮助!
    【解决方案3】:

    检查您的应用程序中的变量名称是否正确,如果它是“

    网址模式

    " 或其他任何东西。 更正名字对我有帮助

    【讨论】:

    • 很好,我有 url_patterns
    • 这个需要更多的赞成票,很好的观察!
    • 非常感谢!
    【解决方案4】:

    在我的情况下,我在部署过程中遇到了这个错误。 Apache 不断给我“AH01630:客户端被服务器配置拒绝”错误。 这表明 apache 配置有问题。当我看到这个错误时,为了帮助解决问题,我在 settings.py 中打开了 Debug=True。

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

    【讨论】:

      【解决方案5】:

      我在尝试使用 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/')),
      

      回答:修复后您仍然可以使用 url 模式的名称:

      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'),
          ....
      )
      

      【讨论】:

        【解决方案6】:

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

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

        网址格式有效,但问题是由于输入错误导致的导入错误。我输入了restframework 而不是rest_framework

        【讨论】:

          【解决方案7】:

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

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

          而不是

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

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

          【讨论】:

            【解决方案8】:

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

            【讨论】:

              【解决方案9】:

              就我而言,这是因为元组解包。我只有一个网址,这个ImproperlyConfigured 错误的根本原因是

              TypeError: 'URLPattern' object is not iterable
              

              我在末尾使用了一个逗号,它解决了这个问题。

              urlpatterns = (url(...) , )
              

              【讨论】:

                【解决方案10】:

                检查变量的名称。

                我的错误原因是使用"urlspatterns" 代替"urlpatterns"

                更正变量的名称为我解决了这个问题。

                【讨论】:

                【解决方案11】:

                django.urls.reverse()-->django.urls.reverse_lazy() 这将立即解决它。

                【讨论】:

                  猜你喜欢
                  • 2014-07-03
                  • 2013-07-05
                  • 2014-11-22
                  • 2011-09-22
                  • 2013-07-15
                  • 2018-10-22
                  • 1970-01-01
                  • 2018-06-27
                  • 1970-01-01
                  相关资源
                  最近更新 更多