Pour moi, cette erreur s'est produite dans mon projet django pour les raisons suivantes:
J'ai inséré un nouveau lien hypertexte dans mon home.html présent dans le dossier templates de mon projet comme ci-dessous:
<input type="button" value="About" onclick="location.href='{% url 'about' %}'">
Dans views.py, j'avais les définitions suivantes de count et 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")
- Dans urls.py, j'avais les modèles d'URL suivants:
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"),
]
Comme on peut le voir dans le no. 3 ci-dessus, dans le dernier modèle d'URL, j'appelais incorrectement views.count alors que j'avais besoin d'appeler views.about. Cette ligne fulltext = request.GET['fulltext']
dans la fonction count (qui a été appelée par erreur en raison d'une entrée incorrecte dans les modèles d'url) de views.py a levé l'exception multivaluedictkeyerror.
Ensuite, j'ai changé le dernier modèle d'URL dans urls.py par le bon path('about/',views.about,name="about")
, et tout a bien fonctionné.
Apparemment, en général, un programmeur débutant dans django peut faire l'erreur que j'ai faite d'appeler à tort une autre fonction de vue pour une URL, qui pourrait s'attendre à un ensemble de paramètres différent ou à transmettre un ensemble d'objets différents dans son appel de rendu, plutôt que le comportement prévu.
J'espère que cela aidera certains programmeurs débutants à django.