Template Django tidak ada @
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
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