2016-03-04 5 views
0

Итак, после обновления до Django 1.9 у меня есть эта странная проблема со списком ListViews и url. Все отлично работает в разработке, но мои взгляды, которые подкласс ListView бросить в производстве ошибки 404 (CherryPy/IIS с использованием FORCE_SCRIPT_NAME = '/ проект'):Django ListView Страница не найдена

404 сообщ Ошибка:

Using the URLconf defined in project.urls, Django tried these URL patterns, in this order: 
     1. ^$ [name='home'] 
     2. ^things/ 
     3. ^otherstuff/ 
    The current URL, project/things/, didn't match any of these. 

проекта Основной urls.py:

urlpatterns = [ 
     url(r'^$', RedirectView.as_view(url=reverse_lazy("start")), name="home"), 
     url(r'^things/', include('things.urls')), 
     url(r'^otherstuff/', include('otherstuff.urls')) 
    ] 

Вещи urls.py:

urlpatterns = [ 

     url(r'^start/$', views.Start.as_view(), name="start"), 
     url(r'^dashboard/$', views.Dashboard.as_view(), name="dashboard"), 
     url(r'^stats/$', views.Statistics.as_view(), name="statistics"), 

     # --- Trouble here --- 
     url(r'^$', views.AllThingsList.as_view(), name="all-things"), 
     url(r'^sublistthings/$', views.ThingsSubList.as_view(), name="sub-list-things"), 
     # --- End trouble --- 

     url(r'^selectthing/$', views.SelectThing.as_view(), name="select-thing"), 
     url(r'^(?P<pk>\d+)/$', views.Thing.as_view(), name="thing") 
    ] 

Каждый URL соответствует хорошо, excep t для тех, которые я обозначил как проблема. Мнения, относящиеся к этим адресам простираться следующий класс:

class BaseThingsListView(ListView): 

     def get(self, request, *args, **kwargs): 
      """ 
      return regular list view on page load and then json data on 
      datatables ajax request. 
      """ 

      ... 

      self.object_list = self.get_queryset() 

      # --- Trouble here --- 
      if not self.request.is_ajax(): 
       return super(BaseThingsListView, self).get(request, *args, **kwargs) 
      # --- End Trouble ---     

      ... 

      context = {ajax_stuff} 
      return HttpResponse(json.dumps(context), content_type='application/json') 

     # Other methods include: 
     def get_table_context_data(self, **kwargs): 
     def get_context_data(self, *args, **kwargs): 
     def get_header_for_field(self, field): 
     def set_page(self): 
     def get_paginate_by(self, queryset): 
     def get_queryset(self): 
     def filter_queryset(self, qs): 
     def order_queryset(self, qs): 
     def get_rows(self, objects): 
     def format_col(self, field, obj): 
     def set_query_params(self): 

Если я закомментировать мутной часть выше, Аякса объект возвращается, как и ожидалось, и не 404 не брошенную. Также обратите внимание, что allow_empty имеет значение True, и это приведет к возникновению другого сообщения об ошибке.

Так что же это о возврате getView ListViews, который вызывает это только в процессе производства? Или проблема в другом месте?

UPDATE:

django.core.urlresolvers.Resolver404 генерируется в \ Джанго \ Template \ бэкэндов \ django.py линию 95 в классе шаблона (объект):

 return self.template.render(context) 

... который отладчик принимает и генерирует вводящий в заблуждение 404 msg. Могли ли мои загрузчики шаблонов установить неверно? На самом деле не уверен, куда идти отсюда.

ответ

0

Вы нарушили urls.pyurl(r'^sublistthings/$', views.ThingsSubList.as_view(), name="sub-list-things"),name="complete-details"), вы сделали ошибку, поставив дополнительные name="complete-details"),

А также нет URL, которые соответствуют '^script_name/' картины

+0

К сожалению, первая ошибка была одна я сделал переписывание код здесь. 'script_name' добавляется при использовании FORCE_SCRIPT_NAME. Я редактировал, чтобы показать что-то, что имеет больше смысла. – Bott0610

 Смежные вопросы

  • Нет связанных вопросов^_^