【问题标题】:i want to edit my restaurant data but i got this"The view company.views.edit_res didn't return an HttpResponse object. It returned None instead."我想编辑我的餐厅数据,但我得到了这个“视图 company.views.edit_res 没有返回 HttpResponse 对象。它返回了 None 。”
【发布时间】:2021-03-04 14:21:09
【问题描述】:

ValueError at /company/edit_res/1/ 我在“F:\restaurant\venv\lib\site-packages\django\core\handlers\base.py,第 307 行,在 check_response”这个位置得到了这个错误指导我成功编辑这是我的第一个学习项目

views.py

def edit_res(request, id):
    if request.method == 'POST':
        pi = ResRegister.objects.get(pk=id)
        fm = CompRegisterForm(request.POST, instance=pi)
        if fm.is_valid():
            fm.save()
        else:
            pi = User.objects.get(pk=id)
            fm = CompRegisterForm(instance=pi)
        return render(request, 'comp/edit.html', {'form': fm})

urls.py

from django.urls import path
from . import views
from django.conf.urls.static import static
from django.conf import settings
app_name = 'company'

urlpatterns = [

    path('res_list/', views.res_list, name='res_list'),
    path('food_list/', views.food_list, name='food_list'),
    path('remove_res/<int:id>/', views.remove_res, name='remove_res'),
    path('remove_food/<int:id>/', views.remove_food, name='remove_food'),
    path('edit_res/<int:id>/', views.edit_res, name='edit_res'),
    path('edit_food/<int:pd>/', views.edit_food, name='edit_food'),
    path('add_food/', views.add_food, name='add_food'),
    path('cart_page/', views.cart_page, name='cart_page'),
    path('generate_invoice/', views.generate_invoice, name='generate_invoice'),


] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

edit.html

<!doctype html>
{% extends 'Comp_base.html' %}
{% block body %}
{% load static %}
<br><br>
  <div class="container">

      <h1>Update Information</h1><br>
   <form method="post" enctype="multipart/form-data">
    {% csrf_token %}
    {{ form.as_p }}
    <button type="submit" name="register" class="btn btn-primary btn-lg btn-block">Update</button><br>

</form>

</div>
{% endblock %}

【问题讨论】:

    标签: python django django-rest-framework django-views django-templates


    【解决方案1】:

    我相信您会收到该错误,因为 return 语句嵌套在 if 语句中,这意味着仅当请求是 POST 方法时才返回某些内容。这就是为什么如果该条件失败,它会返回 None 。您可以像这样更改它:

    def edit_res(request, id):
        if request.method == 'POST':
            pi = ResRegister.objects.get(pk=id)
            fm = CompRegisterForm(request.POST, instance=pi)
            if fm.is_valid():
                fm.save()
        else:
            pi = User.objects.get(pk=id)
            fm = CompRegisterForm(instance=pi)
            
        return render(request, 'comp/edit.html', {'form': fm})
    

    【讨论】:

    • 我刚刚编辑了我的答案以将 else 语句也带出来。立即尝试,看看是否出现同样的错误
    猜你喜欢
    • 2016-05-01
    • 2021-09-01
    • 2023-03-17
    • 2019-11-27
    • 2021-04-22
    • 1970-01-01
    • 1970-01-01
    • 2017-11-26
    • 2017-12-28
    相关资源
    最近更新 更多