Django ValueError(视图 views.save_flow_data 没有 return HttpResponse 对象。它 return 编辑了 None。)

Django ValueError (The view views.save_flow_data didn't return an HttpResponse object. It returned None instead.)

当我尝试提交表单时收到此消息:

The view views.save_flow_data didn't return an HttpResponse object. It returned None instead.

Views.py

def save_flow_data(request):
    if request.method == 'POST':
        if request.POST.get('upload_flow') \
        and request.POST.get('water_flow_rate')\
        and request.POST.get('water_flow_rate_unit')\
            data=CalcData()
            data.water_flow_rate = request.POST.get('water_flow_rate')
            data.water_flow_rate_unit = request.POST.get('water_flow_rate_unit')
            data.save()

            return render(request, 'io/flow.html')  

    else:
        return render(request,'io/flow.html')

models.py

class CalcData(models.Model):
    upload_flow = models.BooleanField(default=False)
    water_flow_rate = models.DecimalField(max_digits=100, decimal_places=5)
    water_flow_rate_unit = models.TextChoices('wfr_unit', 'm3/day m3/month')
    datetime = models.DateTimeField(default=timezone.now)

表单中的提交按钮

<div>
    <button action="{% url 'MyProject:save_flow_data' %}" type="submit" class="btn btn-light" style="width: 517.5px;" >Calculate</button>
</div>

urls.py

urlpatterns = [
path('', views.home, name='MyProject-home'),
path('io/flow/', views.io_flow, name='MyProject-io-flow'),
path('io/flow/save_flow_data', views.save_flow_data, name='save_flow_data')
]

我真的不知道从这里到哪里去。我有一个完美的工作形式,但一旦我放大它,它就失败了。

删除 else 语句并保留缩进: return渲染(请求,'io/flow.html') 在函数级别。

案例

if request.POST.get('upload_flow') \
        and request.POST.get('water_flow_rate')\
        and request.POST.get('water_flow_rate_unit')\

is False 未被覆盖

您需要删除最后一个 else :

def save_flow_data(request):
    if request.method == 'POST':
        if request.POST.get('upload_flow') \
        and request.POST.get('water_flow_rate')\
        and request.POST.get('water_flow_rate_unit')\
            data=CalcData()
            data.water_flow_rate = request.POST.get('water_flow_rate')
            data.water_flow_rate_unit = request.POST.get('water_flow_rate_unit')
            data.save()

            return render(request, 'io/flow.html')  

    return render(request,'io/flow.html')

或者在未覆盖的路径上加一个return

def save_flow_data(request):
    if request.method == 'POST':
        if request.POST.get('upload_flow') \
        and request.POST.get('water_flow_rate')\
        and request.POST.get('water_flow_rate_unit')\
            data=CalcData()
            data.water_flow_rate = request.POST.get('water_flow_rate')
            data.water_flow_rate_unit = request.POST.get('water_flow_rate_unit')
            data.save()

            return render(request, 'io/flow.html')

        return render(request, 'io/flow.html')  # Or return something else

    else:
        return render(request,'io/flow.html')