Простая математика на одной веб-странице

В настоящее время я пытаюсь сделать что-то элементарное, например, сложить два числа, которые пользователь вводит на странице, и показать результат на той же странице, но сталкиваюсь с проблемами.

index.html

enter image description here

{% extends "project_long_page/base.html" %}

{% block body %}

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

    {% csrf_token %}

    {{ forms }}

    <input type="submit">

</form>

{% endblock %}

views.py

enter image description here

from django.shortcuts import render
import datetime
from django import forms
from django.shortcuts import render


class NewTaskForm(forms.Form):
    num1 = forms.IntegerField(label="Number 1")
    num2 = forms.IntegerField(label="Number 2")


# Create your views here.
def index(request):
    return render(request, "project_long_page/index.html")


def add(request):
    return render(request, "project_long_page/index.html", {
        "form": NewTaskForm()
    })

urls.py

enter image description here

from django.urls import path
from . import views

app_name = "project_long_page"
urlpatterns = [
    path("", views.index, name="index")

]

Текущий вывод веб-страницы

enter image description here

Желаемый вывод веб-страницы (При сохранении исходных введенных значений)

enter image description here

Спасибо за помощь, если вы поможете :,)

Редактирование:

В случае, если вы хотите увидеть это...

enter image description here

Измените представление index() на:

def index(request):
    if request.method == "POST":
        form = NewTaskForm(request.POST)
        if form.is_valid():
            num1 = form.cleaned_data["num1"]
            num2 = form.cleaned_data["num2"]
            result = num1 * num2
            context = {
                "form": NewTaskForm(initial={"num1": num1, "num2": num2}),
                "result": result
            }
            return render(request, "project_long_page/index.html", context)

    form = NewTaskForm()
    return render(request, "project_long_page/index.html", {"form": form})

Затем добавьте result в ваш шаблон.

Не проверял, работает ли код

Вернуться на верх