Django - включенный urlconf не имеет никаких шаблонов - PullRequest
38 голосов
/ 10 июня 2010

Мой сайт, который работал раньше, неожиданно начал ломаться с ошибкой

"Неправильно настроен в / Включенный 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'),
)

Кто-нибудь знает, что не так? Это сводит меня с ума.

Спасибо

Ответы [ 5 ]

56 голосов
/ 07 апреля 2014

TL; DR: вам, вероятно, нужно использовать reverse_lazy() вместо reverse()

Если ваш urls.py импортирует представление на основе классов, которое использует reverse(), вы получите эту ошибку;reverse_lazy()

исправит использование *1007*. Для меня ошибка

Включенный файл urlconf project.urls не содержит шаблонов

получил, потому что:

  • project.urls импортировано app.urls
  • app.urls импортировано app.views
  • app.views имело представление на основе классов, котороеused reverse
  • reverse import project.urls, что приводит к круговой зависимости.

Использование reverse_lazy вместо reverse решил проблему: это откладывало обращение URL-адреса до тех пор, пока оно не потребовалось в первый раз во время выполнения.

Мораль: всегда используйте reverse_lazy, если вам нужно повернуть вспять до запуска приложения.

27 голосов
/ 10 июня 2010

Проверьте свои шаблоны на наличие операторов include, которые указывают на несуществующие модули или модули, которые не имеют члена urlpatterns. Я вижу, что у вас есть include('urls.ajax'), что может быть не правильно. Это должно быть ajax.urls?

2 голосов
/ 14 мая 2014

В моем случае я получил эту ошибку во время развертывания.Apache продолжал выдавать мне ошибку «AH01630: клиент отклонен из-за конфигурации сервера».Это указывало на то, что это неправильно с настройкой Apache.Чтобы помочь устранить неполадки, я включил Debug = True в settings.py, когда увидел эту ошибку.

В конце мне пришлось добавить новую директиву к конфигурации статических файлов в конфигурации apache.Когда статические файлы были недоступны и для параметра Debug in django было установлено значение true, эта ошибка вызывалась каким-то образом.

1 голос
/ 12 июня 2014

Я получил эту ошибку при попытке реверсировать (и reverse_lazy) используя RedirectView и параметры из URL. Оскорбительный код выглядел так:

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

Исправлено использование этого URL в urlpatterns:

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'),
    ....
)
0 голосов
/ 07 мая 2019

В моем случае у меня была следующая ошибка:

ImproperlyConfigured: включенный URLconf, похоже, не содержит никаких шаблонов.Если вы видите допустимые шаблоны в файле, то проблема, вероятно, вызвана циклическим импортом.

Шаблоны URL были действительными, но проблема заключалась в ошибке импорта, вызванной опечаткой.Я набрал restframework вместо rest_framework.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...