2010-06-10 25 views
27

Trang web của tôi, được làm việc trước, đột nhiên bắt đầu phá vỡ với lỗiDjango - Các bao gồm URLconf không có bất kỳ mô hình trong đó

"ImproperlyConfigured tại/ trình bao gồm URLconf resume.urls không có bất kỳ các mẫu trong đó "

Cơ sở dự án được gọi là tiếp tục. Trong settings.py tôi đã đặt

ROOT_URLCONF = 'resume.urls' 

Đây là sơ yếu lý lịch của tôi, nằm trong thư mục gốc của dự án.

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

) 

Tôi có một thư mục có tên là url và tệp ajax.py bên trong. (Tôi cũng đã tạo một trống init .py trong cùng thư mục để các url sẽ được nhận dạng.) Đây là ajax.py.

from django.conf.urls.defaults import * 

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

Bất cứ ai biết điều gì là sai? Điều này khiến tôi điên mất.

Cảm ơn,

Trả lời

24

Kiểm tra mẫu của bạn cho bao gồm báo cáo trỏ đến các module không tồn tại hoặc mô-đun mà không có thành viên urlpatterns. Tôi thấy rằng bạn có một số include('urls.ajax') có thể không chính xác. Có nên là ajax.urls không?

+0

Tôi đồng ý rằng đó có thể là vấn đề. –

+0

Tôi đã chỉnh sửa bài đăng gốc của mình để bao gồm mã từ ajax.py. Tôi cũng đã cố gắng bình luận về việc bao gồm - vẫn không có súc sắc. – unsorted

+6

Bạn không thể có một 'urls.py' và một thư mục có tên là' url 'trong cùng một gói. Nếu bạn muốn có 'resume.urls' và' resume.urls.ajax', thì bạn sẽ cần phải di chuyển tất cả nội dung của 'urls.py' vào' url/__ init __. Py' và xóa 'urls.py 'tệp. – AdmiralNemo

40

TL; DR: Bạn có thể cần phải sử dụng reverse_lazy() thay vì reverse()

Nếu bạn urls.py nhập khẩu một cái nhìn dựa trên lớp có sử dụng reverse(), bạn sẽ nhận được lỗi này; sử dụng reverse_lazy() sẽ khắc phục.

Đối với tôi, lỗi

Các project.urls bao gồm URLconf không có bất kỳ mô hình trong đó

đã ném vì:

  • project.urls nhập khẩu app.urls
  • app.urls nhập app.views
  • app.views có một cái nhìn đẳng cấp dựa trên sử dụng reverse
  • reverse nhập khẩu project.urls, dẫn đến một sự phụ thuộc tròn.

Sử dụng reverse_lazy thay vì reverse giải quyết vấn đề: này hoãn việc đảo chiều của các url cho đến khi nó lần đầu tiên cần thiết khi chạy.

Đạo đức: Luôn sử dụng reverse_lazy nếu bạn cần đảo ngược trước khi ứng dụng bắt đầu.

+1

Tôi vẫn gặp vấn đề này ở Django 1.6.5. Tôi sẽ xảy ra khi tôi thêm dòng này vào một DeleteView: 'success_url = reverse_lazy ('client_list')' và dừng lại khi tôi mã cứng URL :( – CpILL

2

Trong trường hợp của tôi, tôi gặp lỗi này trong khi triển khai. Apache tiếp tục cho tôi lỗi "AH01630: máy khách bị từ chối bởi cấu hình máy chủ". Điều này chỉ ra rằng đã sai với cấu hình apache.Để giúp khắc phục sự cố, tôi đã bật Debug = True trong settings.py khi tôi thấy lỗi này.

Cuối cùng, tôi phải thêm một chỉ thị mới vào cấu hình tệp tĩnh bên trong cấu hình apache. Khi các tệp tĩnh không thể truy cập được và Debug trong cài đặt django được đặt thành true, lỗi này đã được kích hoạt bằng cách nào đó.

1

Tôi gặp lỗi này khi cố đảo ngược (và reverse_lazy) bằng cách sử dụng RedirectView và các thông số từ url. Mã vi phạm trông như thế này:

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

Việc sửa chữa là sử dụng url này trong urlpatterns:

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

ĐÁP: Việc sửa chữa, do đó bạn vẫn có thể sử dụng tên của mẫu 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'), 
    .... 
) 
Các vấn đề liên quan