Đối với tôi, lỗi này xảy ra trong dự án django của tôi vì những điều sau đây:
Tôi đã chèn một siêu liên kết mới trong home.html của tôi trong thư mục mẫu của dự án của tôi như dưới đây:
<input type="button" value="About" onclick="location.href='{% url 'about' %}'">
Trong lượt xem, tôi đã có các định nghĩa về đếm và về:
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")
- Trong url, tôi có các mẫu url sau:
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"),
]
Như có thể thấy trong không. 3 ở trên, trong mẫu url cuối cùng, tôi đã gọi không chính xác lượt xem.count trong khi tôi cần gọi view.about. Dòng này fulltext = request.GET['fulltext']
trong hàm đếm (được gọi nhầm là do nhập sai trong urlpotype) của view.py đã ném ngoại lệ multivaluedictkeykeyor.
Sau đó, tôi đã thay đổi mẫu url cuối cùng trong urls.py thành mẫu chính xác path('about/',views.about,name="about")
, và mọi thứ đều hoạt động tốt.
Rõ ràng, nói chung, một lập trình viên mới trong django có thể mắc lỗi tôi đã gọi sai chức năng xem khác cho một url, có thể đang mong đợi bộ tham số khác nhau hoặc chuyển tập hợp các đối tượng khác nhau trong lệnh gọi kết xuất của nó, thay vì hành vi dự định.
Hy vọng điều này sẽ giúp một số lập trình viên mới để django.