Bei mir trat dieser Fehler in meinem Django-Projekt aus folgenden Gründen auf:
Ich habe einen neuen Hyperlink in meine home.html eingefügt, der im Vorlagenordner meines Projekts wie folgt vorhanden ist:
<input type="button" value="About" onclick="location.href='{% url 'about' %}'">
In views.py hatte ich die folgenden Definitionen von count und about:
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")
- In urls.py hatte ich die folgenden URL-Muster:
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"),
]
Wie in Nr. Zu sehen ist. 3 oben, im letzten URL-Muster, habe ich views.count fälschlicherweise aufgerufen, während ich views.about aufrufen musste. Diese Zeile fulltext = request.GET['fulltext']
in der Zählfunktion (die fälschlicherweise wegen falscher Eingabe in URL-Mustern aufgerufen wurde) von views.py hat die multivaluedictkeyerror-Ausnahme ausgelöst.
Dann habe ich das letzte URL-Muster in urls.py in das richtige geändert, dh path('about/',views.about,name="about")
alles hat gut funktioniert.
Anscheinend kann ein Programmieranfänger in Django im Allgemeinen den Fehler machen, den ich gemacht habe, indem ich fälschlicherweise eine andere Ansichtsfunktion für eine URL aufgerufen habe, die möglicherweise andere Parametersätze erwartet oder andere Objektsätze in ihrem Renderaufruf übergibt, als das beabsichtigte Verhalten.
Hoffe, dies hilft einigen Neulingen Programmierer zu Django.