Django:View没有返回HttpResponse对象。它返回了None

时间:2016-09-17 18:55:08

标签: python django

基本上我希望用户在字段中输入一个数字并且要打印斐波纳契结果但是一旦输入插入到输入字段中,我就会收到它返回None而不是对象

我的代码在这里用于我的html表单:

{% block content %}
  <form method="POST" action=".">{% csrf_token %}
     <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 %}
{% endblock %}

我的views.py的内容就是这个:

from django.shortcuts import render_to_response, get_object_or_404, render
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(request, 'fibb/fibb.html', {'cal': cal})
else:
   return render(request, 'fibb/fibb.html', {})

我的斐波那契函数就是这个:

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

我想知道导致错误的位置,因为我一次又一次地看着,我可以看到我正在返回渲染而不是

完整追溯包括:

Traceback:

File "C:\python35\lib\site-packages\django\core\handlers\base.py" in get_response
158. % (callback.__module__, view_name))

Exception Type: ValueError at /fibb/
Exception Value: The view fibb.views.fibb didn't return an HttpResponse object. It returned None instead.

1 个答案:

答案 0 :(得分:0)

views.py 文件中,是否有任何 fibb 函数返回HTTPResponse?在错误跟踪中,Django在 fibb.views 中的 fibb 函数中找不到该响应。您可以查看指向 fibb 功能的网址。也许它应该指向 fibocal 函数,如上所述。