将数据从django视图传递到模板
我希望在计算后将视图中的数据显示到模板中。该视图从Django表单收集数据,然后执行简单的计算。但是,该函数不会重定向到模板将数据从django视图传递到模板,django,django-templates,django-views,Django,Django Templates,Django Views,我希望在计算后将视图中的数据显示到模板中。该视图从Django表单收集数据,然后执行简单的计算。但是,该函数不会重定向到模板 views.py from . import forms from django.http import HttpResponseRedirect from django.shortcuts import render,redirect def index(request): form = forms.InputFor
views.py
from . import forms
from django.http import HttpResponseRedirect
from django.shortcuts import render,redirect
def index(request):
form = forms.InputForm()
return render(request, 'index.html', {'form': form})
def addition(a,b):
c = a + b
return c
def input_form_Addition(request):
if request.method == 'post':
form = forms.InputForm(request.POST)
if form.is_valid():
input1 = form.cleaned_data['input1']
input2 = form.cleaned_data['input2']
total = addition(input1,input2)
return render(request, 'output.html', {'total': total})
else:
form = forms.InputForm()
模板(output.html)如下所示:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Forms</title>
</head>
<body>
<p>The Sum is {{ total }}</p>
</body>
</html>
我的Django表单显示得很好,如下所示
forms.py
来自django导入表单
class InputForm(forms.Form):
input1 = forms.FloatField()
input2 = forms.FloatField()
并显示在:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Forms</title>
</head>
<body>
<h2>Addition Page</h2>
<p>Fill in two numbers to get their sum</p>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Add" >
</form>
</body>
</html>
形式
添加页
填写两个数字得到它们的和
{%csrf_令牌%}
{{form.as_p}}
你能把你的表格编码吗?(模板和表单.py)
编辑:
好的,我发现你的问题:
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Add" >
views.py
from . import forms
from django.http import HttpResponseRedirect
from django.shortcuts import render,redirect
def index(request):
form = forms.InputForm()
return render(request, 'index.html', {'form': form})
def addition(a,b):
c = a + b
return c
def input_form_Addition(request):
form = forms.InputForm(request.POST)
if form.is_valid():
input1 = form.cleaned_data['input1']
input2 = form.cleaned_data['input2']
total = addition(input1, input2)
return render(request, 'output.html', {'total': total})
只需替换函数中的行输入表单添加(请求): 与
重定向
不接受模板。这就是重定向的工作原理。简单来说,重定向意味着您将用户重定向到另一个url。相反,只需使用render
函数即可。render
函数也不会显示output.hml。取而代之的是再次加载输入表单。请修复视图中的缩进。我已修复标识并替换了呈现函数。这应该是注释,而不是答案。无法使用我的声誉添加注释我是新手我已添加表单操作。将显示output.html
,但是,它不会给出视图中的总变量。能否在视图中发送结果返回?抱歉。。。我不明白。
<form method="post" action="/output/">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Add" >
</form>
path('output/', views.input_form_Addition, name='output')
from . import forms
from django.http import HttpResponseRedirect
from django.shortcuts import render,redirect
def index(request):
form = forms.InputForm()
return render(request, 'index.html', {'form': form})
def addition(a,b):
c = a + b
return c
def input_form_Addition(request):
form = forms.InputForm(request.POST)
if form.is_valid():
input1 = form.cleaned_data['input1']
input2 = form.cleaned_data['input2']
total = addition(input1, input2)
return render(request, 'output.html', {'total': total})
if request.method == 'post':
if request.method == 'POST':