Para mí, este error ocurrió en mi proyecto django debido a lo siguiente:
Inserté un nuevo hipervínculo en mi home.html presente en la carpeta de plantillas de mi proyecto de la siguiente manera:
<input type="button" value="About" onclick="location.href='{% url 'about' %}'">
En views.py, tenía las siguientes definiciones de cuenta y sobre:
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")
- En urls.py, tenía los siguientes patrones de URL:
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"),
]
Como se puede ver en el no. 3 arriba, en el último patrón de URL, estaba llamando incorrectamente views.count mientras que necesitaba llamar a views.about. Esta línea fulltext = request.GET['fulltext']
en la función de conteo (que se llamó erróneamente debido a una entrada incorrecta en los patrones de url) de views.py arrojó la excepción multivaluedictkeyerror.
Luego cambié el último patrón de url en urls.py por el correcto path('about/',views.about,name="about")
, es decir , y todo funcionó bien.
Aparentemente, en general, un programador novato en django puede cometer el error que cometí al llamar erróneamente a otra función de vista para una url, que podría estar esperando un conjunto diferente de parámetros o pasar un conjunto diferente de objetos en su llamada de representación, en lugar del comportamiento previsto.
Espero que esto ayude a algún programador novato a django.