为了账号安全,请及时绑定邮箱和手机立即绑定

MultiValueDictKeyError at /add, Request method :

MultiValueDictKeyError at /add, Request method :

HUH函数 2022-08-25 15:52:18
这是我 views.py 文件from django.shortcuts import renderdef home(request):    return render(request, 'home.html',{'name':'irtiza'})def add(request):val1 = int(request.GET['num1'])val2 = int(request.GET['num2'])res = val1 + val2return 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 viewsurlpatterns = [    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我现在应该做什么来解决这个错误。这只是一个将两个数字相加的简单函数。请帮帮我。
查看完整描述

3 回答

?
慕虎7371278

TA贡献1802条经验 获得超4个赞

您在网址中经过两次,如下所示...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>


查看完整回答
反对 回复 2022-08-25
?
精慕HU

TA贡献1845条经验 获得超8个赞

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

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


查看完整回答
反对 回复 2022-08-25
?
慕哥9229398

TA贡献1877条经验 获得超6个赞

基本上我在家里的形式上失踪了(方法=“post或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})

然后它工作正常。


查看完整回答
反对 回复 2022-08-25
  • 3 回答
  • 0 关注
  • 116 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号