Template Django tidak ada @

Sep 21 2020

Saya menggunakan python 3.7.2 dan Django 2.1 dan setiap kali saya mencoba memuat url beranda saya mendapatkan kesalahan berikut.

TemplateDoesNotExist di /

ghostwriters / post_list.html

Metode Permintaan: GET URL Permintaan: http: // localhost: 8080 / Django Versi: 2.1 Jenis Pengecualian: TemplateDoesNotExist Nilai Pengecualian:

ghostwriters / post_list.html

Lokasi Pengecualian: C: \ Users \ User.virtualenvs \ ghostwriter-HT06mH6q \ lib \ site-packages \ django \ template \ loader.py di select_template, baris 47 Python Executable: C: \ Users \ User.virtualenvs \ ghostwriter-HT06mH6q \ Skrip \ python.exe

Tidak masuk akal karena memang tidak ada post_list.html dan tidak ada di level aplikasi urls.py atau my views.py jadi mengapa ini terjadi?

urls.py:

dari jalur impor django.urls dari .views import PostListView

urlpatterns = [jalur ('', PostListView.as_view (), name = 'home'),]

views.py:

dari django.shortcuts impor render dari django.views.generic import ListView

dari .models import Post

class PostListView (ListView): model = Post template = 'home.html'

settings.py:

TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join (BASE_DIR, 'templates')], 'APP_DIRS': Benar,

Jawaban

3 MaranSowthri Sep 21 2020 at 08:54

Jika Anda menggunakan CBV (Tampilan Berbasis Kelas), secara default django akan mencari template dengan beberapa pola tertentu. Dalam kasus Anda, karena Anda menggunakan Tampilan Daftar, maka Anda akan mencari YOURMODELNAME_list.html (YOURMODELNAME dalam huruf kecil), Jika Anda memperluas Tampilan Detail, ia akan mencari YOURMODELNAME_detail.html. Jika Anda ingin menimpa perilaku ini, dalam CBV Anda coba ini,

class YourCBV(ListView):
   template_name = 'your_new_template.html'

Untuk referensi Anda, dokumentasi resmi Django