提问者:小点点

MultiValueDictKeyError位于/add,请求方法:GET


这是我的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})

出现此错误。

在此处输入图像描述

URL。py文件

from django.urls import path 
from . import views

urlpatterns = [
    path("",views.home,name="home"),
    path("add", views.add, name="add")
]

home.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 %}

Result.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})

/add“num1”请求方法处的MultiValueDictKeyError:GET请求URL:http://127.0.0.1:7000/add?csrfmiddlewaretoken=t6mVWboKI37vxW3zDbVmpnB3j3g89EzjFhikDDMrB4qVEfrNyqG5pebeXgDLAFE0

我现在应该怎么做才能解决这个错误。这只是一个简单的加法函数。请帮帮我。


共3个答案

匿名用户

您在url中传递了两次< code>num1,如下所示...

url - 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):

    val1 = int(request.GET.get('num1'))
    val2 = int(request.GET.get('num2'))
    res = val1 + val2

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

将表格中的这一行改为如下。。。

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

匿名用户

删除方括号。这不是必需的。

val1 = int(request.GET.get('num1'))
val2 = int(request.GET.get('num2'))

匿名用户

基本上我在家里的形式上缺少(方法=“发布或GET”).html

我所做的更改包括:

主页.html

{% extends 'base.html' %}

{% block content %}

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

<form action="add" method="POST">

    {% 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 %}

views.py

from django.shortcuts import render

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})

然后就可以正常工作了。