如何从Django html表单中的函数返回结果?

时间:2016-09-16 21:46:35

标签: python django

基本上我在这里有这个表格

<form method="POST" action=".">
   <input type="text" name="fcal" value="{{F}}" />
<p>
   <input type="submit" name="fibo" value="Fibonacci" />
</p>
</form>

我希望用户输入一个数字,然后在Fibonacci序列中计算和打印这个数字。

这是我的斐波那契函数

def fibo(n):
    if n == 0:
       return 0
    elif n == 1:
       return 1
    else:
       result = fibo(n - 1) + fibo(n - 2)
       return result

我相信我的问题来自views.py文件,因为我不知道如何创建要渲染的结果。

from django.template import Context, loader, RequestContext
from django.shortcuts import render_to_response, get_object_or_404
from django.forms import ModelForm
from django.http import HttpResponse, Http404, HttpResponseRedirect, HttpResponseNotFound
import fibonacci


def fibocal(request):
    if request.method == 'POST':
       fb = request.POST['fcal']
       cal = fibonacci.fibo(fb)
       return render_to_response('fibb/fibb.html', context_instance=RequestContext(request, cal))
    else:
       print('Wrond input type')

如果有人能够至少解释如何从函数中获取结果并将其打印在同一页面上,我将非常感激。

1 个答案:

答案 0 :(得分:0)

你的html文件

    <form method="POST" action=".">
       <input type="text" name="fcal" value="{{F}}" />
    <p>
       <input type="submit" name="fibo" value="Fibonacci" />
    </p>
    </form>

{% if cal %}
      Your Fibonacci answer is {{cal}} 
{% endif %}

您的观点:

def fibocal(request):
    if request.method == 'POST':
       fb = request.POST['fcal']
       cal = fibonacci.fibo(fb)
       return render(request, 'fibb/fibb.html', {'cal': cal})
    else:
       return render(request, 'fibb/fibb.html', {})

这样就可以了解