MultiValueDictKeyError at /add, Request method :

这是我 views.py 文件


from django.shortcuts import render


def home(request):

    return render(request, 'home.html',{'name':'irtiza'})


def add(request):


val1 = int(request.GET['num1'])

val2 = int(request.GET['num2'])

res = val1 + val2


return render(request, "result.html",{'result': res})

当我运行此代码时,我收到此错误,


错误


然后我尝试了这个代码:


def add(request):


    val1 = int(request.GET.get(['num1']))

    val2 = int(request.GET.get(['num2']))

    res = val1 + val2


    return render(request, "result.html",{'result': res})

发生此错误。


在此输入图像描述


urls.py 文件


from django.urls import path 

from . import views


urlpatterns = [

    path("",views.home,name="home"),

    path("add", views.add, name="add")

]

首页.html 文件


{% extends 'base.html' %}


{% block content %}


<h1> hello  {{name}} </h1>


<form action="add">


    {% csrf_token %}


    Enter 1st number : <input type="text" name="num1"><br>

    Enter 2nd number : <input type="text" name="num2"><br>

    <input type="submit">


</form>


{% endblock %}

结果.html文件


{% extends 'base.html' %}


{% block content %}


    Result : {{result}}


{% endblock %}

当我尝试POST功能时,它会给出下面提到的错误


from django.shortcuts import render


# Create your views here.


def home(request):

    return render(request, 'home.html',{'name':'irtiza'})


def add(request):


    val1 = int(request.POST['num1'])

    val2 = int(request.POST['num2'])

    res = val1 + val2


    return render(request, "result.html",{'result': res})

MultiValueDictKeyError at /add 'num1' Request Method: GET Request URL: http://127.0.0.1:7000/add?csrfmiddlewaretoken=t6mVWboKI37vxW3zDbVmpnB3j3g89EzjFhikDDMrB4qVEfrNyqG5pebeXgDLAFE0&num1=3&num1=3 Django Version: 3.0.3 Exception Type: MultiValueDictKeyError Exception Value:

'num1' Exception Location: C:\Users\irtiza\AppData\Local\Continuum\anaconda3\lib\site-packages\django\utils\datastructures.py in getitem, 第 78 行 Python 可执行文件: C:\Users\irtiza\AppData\Local\Continuum\anaconda3\python.exe Python 版本: 3.7.4


我现在应该做什么来解决这个错误。这只是一个将两个数字相加的简单函数。请帮帮我。


HUH函数
浏览 117回答 3
3回答

慕虎7371278

您在网址中经过两次,如下所示...num1url - http://127.0.0.1:7000/add?csrf.......&num1=2&num1=3改变它吹...url - http://127.0.0.1:7000/add?csrf.......&num1=2&num2=3并通过以下方式获得它...def add(request):&nbsp; &nbsp; val1 = int(request.GET.get('num1'))&nbsp; &nbsp; val2 = int(request.GET.get('num2'))&nbsp; &nbsp; res = val1 + val2&nbsp; &nbsp; return render(request, "result.html",{'result': res})并从您的表单更改此行,如下所示...Enter 2nd number : <input type="text" name="num2"><br>

精慕HU

删除方括号。它不是必需的。val1&nbsp;=&nbsp;int(request.GET.get('num1')) val2&nbsp;=&nbsp;int(request.GET.get('num2'))

慕哥9229398

基本上我在家里的形式上失踪了(方法=“post或GET”).html我所做的更改包括:家.html{% extends 'base.html' %}{% block content %}<h1> hello&nbsp; {{name}} </h1><form action="add" method="POST">&nbsp; &nbsp; {% csrf_token %}&nbsp; &nbsp; Enter 1st number : <input type="text" name="num1"><br>&nbsp; &nbsp; Enter 2nd number : <input type="text" name="num2"><br>&nbsp; &nbsp; <input type="submit"></form>{% endblock %}views.pyfrom django.shortcuts import renderdef home(request):&nbsp; &nbsp; return render(request, 'home.html',{'name':'irtiza'})def add(request):val1 = int(request.POST['num1'])val2 = int(request.POST['num2'])res = val1 + val2return render(request, "result.html",{'result': res})然后它工作正常。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python