mutiValueDictKeyError в Django - PullRequest
       1

mutiValueDictKeyError в Django

0 голосов
/ 23 октября 2019

Я новичок в разработке приложений Django. Я пытался разработать простое приложение, в котором оно добавляет два числа. Я получаю MulitValuedDictKeyError. Я сослался на несколько ранее заданных вопросов того же типа и попробовал некоторые решения, но ни один не помог. Пожалуйста, помогите мне исправить это.

views.py

from django.shortcuts import render
from django.http import HttpResponse

# Create your views here.

def home(request):
    return render(request,'home.html',{'name':'pavan sunder'})

def add(request):
    val1 = request.GET["num1"]
    val2 = request.GET["num2"]
    res = val1 + val2
    return render(request, 'result.html',{'result':res})

home.html

<!DOCTYPE html>
<html lang="en">

<body>
{% extends 'base.html' %}

{% block content %}
<h1>hello {{name}}</h1>

<form action="add">
    Enter 1st number:<input type="text",name="num1"><br>
    Enter 2nd number:<input type="text",name="num2"><br>
    <input type="Submit">
</form>
{% endblock %}

</body>
</html>

result.html

<!DOCTYPE html>
<html lang="en">

<body>
{% extends 'base.html' %}
{% block content %}
Result:{{result}}
{% endblock %}

</body>
</html>

сообщение об ошибке:

MultiValueDictKeyError at / add 'num1' Метод запроса: GET URL запроса: http://127.0.0.1:8000/add Версия Django: 2.2.6 Тип исключения: MultiValueDictKeyError Значение исключения:
'num1' Расположение исключения: C: \ Users \ PAVANM ~ 1 \ django \ lib \ site-packages \ django \ utils \ datastructures.py в getitem , строка 80 Исполняемый файл Python: C: \ Users \ PAVANM ~ 1 \ django \ Scripts \ python.exe Версия Python: 3.7.1 Путь к Python:
['C: \ Users \ pavan m sunder \ projects \ django\ tst ',' C: \ Users \ PAVANM ~ 1 \ django \ Scripts \ python37.zip ',' C: \ Users \ PAVANM ~ 1 \ django \ DLLs ',' C: \ Users \ PAVANM ~ 1 \ django \lib ',' C: \ Users \ PAVANM ~ 1 \ django \ Scripts ',' c: \ users \ pavan m '' sunder \ appdata \ local \ Programs \ python \ python37-32 \ Lib ',' c: \ users\ pavan m '' sunder \ appdata \ local \ Programs \ python \ python37-32 \ DLLs ',' C: \ Users \ PAVANM ~ 1 \ django ',' C: \ Users \ PAVANM ~ 1 \ django \ lib \ site-packages '] Время сервера: ср., 23 октября 2019 г. 05:32:02 + 0000

Ответы [ 2 ]

1 голос
/ 23 октября 2019

Изменение:

<form action="add">

На:

<form action="{% url 'add' %}" method="get">

Изменение:

val1 = request.GET["num1"]
val2 = request.GET["num2"]

На:

val1 = int(request.GET["num1"])
val2 = int(request.GET["num2"])

Изменение:

<input type="text",name="num1"><br>

Кому:

<input type="text" name="num1"><br>

Нет необходимости ,.

0 голосов
/ 23 октября 2019

val1 = request.GET["num1"] при этом возвращается строка, а также используется GET.get(), при отсутствии ключа возвращается None.

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

 res = val1+val2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...