The NoReverseMatch
kesalahan mengatakan bahwa Django tidak dapat menemukan pola url yang cocok untuk url yang Anda berikan di setiap url aplikasi diinstal Anda.
Pengecualian NoReverseMatch dimunculkan oleh django.core.urlresolvers ketika URL yang cocok di URLconf Anda tidak dapat diidentifikasi berdasarkan parameter yang disediakan.
Untuk mulai men-debugnya, Anda harus memulai dengan menonaktifkan pesan kesalahan yang diberikan kepada Anda.
NoReverseMatch di / my_url /
Ini adalah url yang sedang dirender, url inilah yang saat ini coba diakses aplikasi Anda, tetapi berisi url yang tidak dapat dicocokkan
Terbalik untuk 'my_url_name'
Ini adalah nama url yang tidak dapat ditemukan
dengan argumen '()' dan
Ini adalah argumen non-kata kunci yang diberikannya ke url
argumen kata kunci '{}' tidak ditemukan.
Ini adalah argumen kata kunci yang diberikannya ke url
n pola mencoba: []
Ini adalah pola yang dapat ditemukannya di file urls.py Anda yang dicoba untuk dicocokkan
Mulailah dengan menemukan kode di sumber Anda yang relevan dengan url yang saat ini sedang dirender - url, tampilan, dan template apa pun yang terlibat. Dalam kebanyakan kasus, ini akan menjadi bagian dari kode yang sedang Anda kembangkan.
Setelah Anda selesai melakukannya, baca kode dengan urutan yang diikuti oleh django sampai Anda mencapai baris kode yang mencoba membuat url untuk Anda my_url_name
. Sekali lagi, ini mungkin di tempat yang baru saja Anda ubah.
Sekarang Anda telah menemukan di mana kesalahan itu terjadi, gunakan bagian lain dari pesan kesalahan untuk menyelesaikan masalah.
Nama url
- Apakah ada kesalahan ketik?
- Sudahkah Anda memberikan url yang Anda coba untuk mengakses nama yang diberikan?
- Jika Anda telah menyetel app_name di aplikasi
urls.py
(misalnya app_name = 'my_app'
) atau jika Anda menyertakan aplikasi dengan namespace (misalnya include('myapp.urls', namespace='myapp')
, Anda perlu menyertakan namespace saat membalik, misalnya {% url 'myapp:my_url_name' %}
atau reverse('myapp:my_url_name')
.
Argumen dan Argumen Kata Kunci
Argumen dan argumen kata kunci digunakan untuk mencocokkan dengan grup tangkapan apa pun yang ada dalam url tertentu yang dapat diidentifikasi dengan ()
tanda kurung di sekitarnya dalam pola url.
Dengan asumsi url yang Anda cocokkan membutuhkan argumen tambahan, lihat di pesan kesalahan dan pertama-tama lihat apakah nilai untuk argumen yang diberikan terlihat benar.
Jika tidak benar:
Nilainya hilang atau string kosong
Ini biasanya berarti bahwa nilai yang Anda berikan tidak berisi nilai yang Anda harapkan. Lihatlah di mana Anda menetapkan nilai untuknya, menetapkan breakpoint, dan Anda harus mencari tahu mengapa nilai ini tidak diteruskan dengan benar.
Argumen kata kunci salah ketik
Perbaiki ini baik di pola url, atau di url yang Anda buat.
Jika benar:
Debug regex
Anda dapat menggunakan situs web seperti regexr untuk segera menguji apakah pola Anda cocok dengan url yang Anda pikir Anda buat, Salin pola url ke dalam bidang regex di bagian atas, lalu gunakan area teks untuk menyertakan url apa pun yang menurut Anda itu harus cocok dengan.
Kesalahan Umum:
Pencocokan dengan karakter .
wild card atau karakter regex lainnya
Ingatlah untuk meloloskan diri dari karakter tertentu dengan \
awalan
Hanya cocok dengan karakter huruf kecil / besar
Coba gunakan salah satu a-Z
atau \w
alih-alih a-z
atauA-Z
Periksa bahwa pola yang Anda cocokkan termasuk dalam pola yang dicoba
Jika tidak ada di sini, kemungkinan Anda lupa menyertakan aplikasi Anda dalam INSTALLED_APPS
pengaturan (atau urutan aplikasi di dalamnya INSTALLED_APPS
mungkin perlu dilihat)
Versi Django
Dalam Django 1.10, kemampuan untuk membalikkan url dengan jalur pythonnya telah dihapus. Jalur bernama harus digunakan sebagai gantinya.
Jika Anda masih tidak dapat melacak masalahnya, silakan ajukan pertanyaan baru yang mencakup apa yang telah Anda coba, apa yang telah Anda teliti (Anda dapat menautkan ke pertanyaan ini), dan kemudian memasukkan kode yang relevan ke masalah - url yang Anda cocokkan, pola url apa pun yang relevan, bagian dari pesan kesalahan yang menunjukkan apa yang django coba cocokkan, dan mungkin INSTALLED_APPS
pengaturannya jika berlaku.