Проект django python не использует указанные файлы шаблонов
Я знаю, что это что-то тупое, но я начинающий программист и бьюсь головой об это уже 2 часа, и вы, скорее всего, увидите это через 2 секунды, так что... Вид AllEncountersListView, который объявил template_name = 'encounter_list_all.html', вместо этого использует 'encounter_list.html'. Я знаю, что вид вызывается, так как он печатает в терминал, как и ожидалось. Спасибо за ваше время.
views.py:
class AllEncountersListView(generic.ListView):
model = Encounter
paginate_by = 20
template_name = 'encounters_list_all.html'
def get_queryset(self):
print('in allEncounterListView') #to prove the correct view is being called
return Encounter.objects.filter(user=self.request.user).order_by('-encounter_date')
urls.py:
urlpatterns = [
path('',views.index, name='index'),
path('openencounter/', views.open_encounter, name='openencounter'),
path('myencounters/', views.EncountersByUserListView.as_view(), name='my-encounters'),
path('allencounters/', views.AllEncountersListView.as_view(), name='all-encounters'),
path('encounter/<int:pk>', views.EncounterDetailView.as_view(), name = 'encounter-detail'),
path('todaysencounters/', views.TodaysEncountersListView.as_view(), name='todays-encounters'),
path('logout/', views.logout_view, name='logout'),
path('export/', views.export_data_view, name = 'export'),
]
дерево файлов:
── Aents4
│ ├── __init__.py
│ ├── __pycache__
│ ├── asgi.py
│ ├── settings.py
│ ├── templates
│ │ ├── registration
│ │ │ └── login.html
│ │ └── temp
│ ├── urls.py
│ └── wsgi.py
├── db.sqlite3
├── encounters
│ ├── __init__.py
│ ├── __pycache__
│ ├── admin.py
│ ├── apps.py
│ ├── forms.py
│ ├── migrations
│ │ ├── 0001_initial.py
│ │ ├── 0002_auto_20210926_1548.py
│ │ ├── 0003_alter_encounter_encounter_date.py
│ │ ├── 0004_auto_20210927_1704.py
│ │ ├── 0005_animal_max_daily.py
│ │ ├── 0006_auto_20210928_1157.py
│ │ ├── __init__.py
│ │ └── __pycache__
│ ├── models.py
│ ├── registration
│ │ └── login.html
│ ├── static
│ │ └── styles.css
│ ├── templates
│ │ ├── base_generic.html
│ │ ├── encounters
│ │ │ ├── encounter_detail.html
│ │ │ ├── encounter_form.html
│ │ │ ├── encounter_list.html
│ │ │ ├── encounters_list_all.html
│ │ │ ├── encounter_update_form.html
│ │ │ └── encounters_list_by_user.html
│ │ ├── index.html
│ │ ├── openencounter.html
│ │ └── registration
│ │ └── login.html
│ ├── tests.py
│ ├── urls.py
│ └── views.py
└── manage.py
class AllEncountersListView(generic.ListView):
model = Encounter
paginate_by = 20
template_name = "encounters/encounters_list_all.html"
def get_queryset(self):
return Encounter.objects.filter(user=self.request.user).order_by('-encounter_date')
Попробуйте, пожалуйста, если вы еще этого не сделали. Обычно, когда мы настраиваем наш settings.py
, мы заставляем его искать файлы в каталоге templates
, но у вас есть подкаталог encounters
, который содержит файлы шаблона. Попробуйте нацелиться на этот подкаталог с помощью этой строки:
template_name = "encounters/encounters_list_all.html"
Надеюсь, это поможет; пожалуйста, сообщите нам о результате, чтобы мы могли попробовать другие решения, если это необходимо.
Возможно, он не выдавал никаких ошибок, потому что Django class views имеет такую функциональность, что когда имя шаблона не указано, он смотрит на имя класса и пытается понять, какой шаблон нужно отобразить; возможно, именно поэтому используется другой шаблон. Проверьте документацию Django для получения дополнительной информации.