Django - включенный urlconf не имеет никаких шаблонов в нем
Мой сайт, который работал раньше, неожиданно начал ломаться с ошибкой
Неправильно сконфигурировано в/Включенный 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'),
)
Кто-нибудь знает, что не так? Это сводит меня с ума.
Спасибо,
Ответы
Ответ 1
Проверьте свои шаблоны для операторов include, которые указывают на несуществующие модули или модули, у которых нет члена urlpatterns
. Я вижу, что у вас есть include('urls.ajax')
, который может быть неправильным. Должно ли оно ajax.urls
?
Ответ 2
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
, если вам нужно отменить действие перед запуском приложения.
Ответ 3
В моем случае я получил эту ошибку во время развертывания.
Apache продолжал давать мне ошибку "AH01630: клиент, отказавшийся от конфигурации сервера".
Это указывало на неправильность конфигурации Apache. Чтобы помочь устранить неполадку, я включил Debug = True в settings.py, когда увидел эту ошибку.
В конце концов, мне пришлось добавить новую директиву в конфигурацию статических файлов внутри конфигурации apache. Когда статические файлы не были доступны, а параметр "Отладка" в настройках django был установлен в true, эта ошибка как-то срабатывала.
Ответ 4
Я получил эту ошибку при попытке изменить (и 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/')),
ANSWER: исправление, чтобы вы все еще могли использовать имя шаблона 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'),
....
)
Ответ 5
В моем случае у меня была следующая ошибка:
Неправильно сконфигурировано: похоже, что во включенном URLconf отсутствуют какие-либо шаблоны. Если вы видите в файле действительные шаблоны, возможно, проблема связана с циклическим импортом.
Шаблоны URL были допустимы, но проблема заключалась в ошибке импорта, вызванной опечаткой. Я набрал restframework
вместо rest_framework
.
Ответ 6
Примечание: по какой-то причине для меня эта ошибка также исчезла после того, как я сохранил другой файл. Поэтому при первом появлении ошибки я сохранил файл, в котором указал неверный виджет в файле forms.py
:
extra_field = forms.CharField(widget=forms.TextField())
вместо
extra_field = forms.CharField(widget=forms.TextInput())
После изменения правильной версии (TextInput) и сохранения файла forms.py ошибка все еще отображалась в моей консоли. После сохранения другого файла (например, models.py) ошибка исчезла.