Bagi saya, kesalahan ini terjadi pada proyek Django saya karena hal berikut:
Saya memasukkan hyperlink baru ke home.html saya yang ada di folder template proyek saya seperti di bawah ini:
<input type="button" value="About" onclick="location.href='{% url 'about' %}'">
Di views.py, saya memiliki definisi hitung dan sekitar sebagai berikut:
def count(request):
fulltext = request.GET['fulltext']
wordlist = fulltext.split()
worddict = {}
for word in wordlist:
if word in worddict:
worddict[word] += 1
else:
worddict[word] = 1
worddict = sorted(worddict.items(), key = operator.itemgetter(1),reverse=True)
return render(request,'count.html', 'fulltext':fulltext,'count':len(wordlist),'worddict'::worddict})
def about(request):
return render(request,"about.html")
- Di urls.py, saya memiliki pola url berikut:
urlpatterns = [
path('admin/', admin.site.urls),
path('',views.homepage,name="home"),
path('eggs',views.eggs),
path('count/',views.count,name="count"),
path('about/',views.count,name="about"),
]
Seperti yang bisa dilihat pada no. 3 di atas, dalam pola url terakhir, saya salah memanggil views.count sedangkan saya perlu memanggil views.about. Baris ini fulltext = request.GET['fulltext']
dalam fungsi hitung (yang secara keliru disebut karena entri yang salah dalam urlpatterns) dari views.py melemparkan pengecualian multivaluedictkeyerror.
Lalu saya mengubah pola url terakhir di urls.py ke yang benar yaitu path('about/',views.about,name="about")
, dan semuanya bekerja dengan baik.
Rupanya, secara umum programmer pemula di Django dapat membuat kesalahan yang saya buat dengan salah memanggil fungsi tampilan lain untuk url, yang mungkin mengharapkan set parameter yang berbeda atau melewati set objek yang berbeda dalam panggilan rendernya, daripada perilaku yang dimaksud.
Semoga ini bisa membantu beberapa programmer pemula untuk Django.