Невозможно вернуть метод post в html-форме. что я делаю не так?
Я новичок в программировании, впервые изучаю django. Я создал форму с помощью файла home.html и запросил ее методом POST, но в ошибке он выдает метод запроса как GET. Когда я убираю method="POST" и ставлю request.GET в файле views, все работает нормально. Что я делаю не так?
home.html
< 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>
views.py
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'
Метод запроса: GET
URL запроса: http://127.0.0.1:8000/add?num1=17&num2=4
Версия Django: 4.0.1
Тип исключения: MultiValueDictKeyError
Значение исключения:
'num1'
Views.py
def add(request):
if request.method == "POST":
#LOGIC AS TO WHAT TO SERVE WHEN THIS VIEW RECIEVES A POST REQUEST
val1= int(request.POST.get('num1'))
val2= int(request.POST.get('num2'))
res= val1 +val2
return render(request, 'result.html' ,{'result': res})
else:
#serves non POST request , ie GET in this case
...your GET REQUEST LOGIC
return render(request, 'GETREQUESTPAGE.html' ,{'param1': paramval})
urls.py:
# blog.urls
from django.urls import path
from . import views
#example consider a url for app named blog... mention the app name in the urls.py as below
app_name = 'blog'
urlpatterns = [
path('', views.index(), name='add'),
]
home.html : если вы хотите, чтобы представление под названием "add" в блоге приложения обрабатывало запрос POST, то ...
< form action="{% url blogs.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>