Per me, questo errore si è verificato nel mio progetto Django a causa di quanto segue:
Ho inserito un nuovo collegamento ipertestuale nella mia home.html presente nella cartella dei modelli del mio progetto come di seguito:
<input type="button" value="About" onclick="location.href='{% url 'about' %}'">
In views.py, avevo le seguenti definizioni di count e 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, avevo i seguenti schemi 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"),
]
Come si può vedere nel n. 3 sopra, nell'ultimo schema url, stavo chiamando erroneamente views.count mentre avevo bisogno di chiamare views.about. Questa lineafulltext = request.GET['fulltext']
in count (che è stata erroneamente chiamata a causa di una voce errata in urlpatterns) di views.py ha lanciato l'eccezione keyvalor multivalore.
Quindi ho cambiato l'ultimo pattern url in urls.py con quello corretto, ad es path('about/',views.about,name="about")
, , e tutto ha funzionato bene.
Apparentemente, in generale un programmatore principiante in django può commettere l'errore di chiamare erroneamente un'altra funzione di visualizzazione per un url, che potrebbe essere in attesa di un diverso set di parametri o passare diversi set di oggetti nella sua chiamata di rendering, piuttosto che il comportamento previsto.
Spero che questo aiuti alcuni programmatori principianti a django.