Django:将请求和响应作为视图参数传递

log*_*997 1 python django post django-views python-requests

我有一个需要两个参数(请求、响应)的视图。但是,当调用此视图时,我收到一条错误消息 - “figure() 缺少 1 个必需的位置参数:'response'”

视图.py:

def figure(request, response):

    print("request ->", request)
    figures = add_data_to_class(request)
    figures_dict = []
    for figure in figures:
        figures_dict.append({
            "date":figure.date,
            "price_new":figure.price_new,
            "price_used":figure.price_used,
         })
    print(figures_dict)

    context = {"figures":figures_dict}
    return render(response, "app1/figure_data_page.html", context, RequestContext(request))
Run Code Online (Sandbox Code Playgroud)

urls.py

from django.urls import path
from . import views

urlpatterns = [
    path('', views.figure, name="figure")
]
Run Code Online (Sandbox Code Playgroud)

图数据.html

<form action="main\app1\views.py" method="post" id="figure_choice_form">
    <label for="id">Enter ID</label>
    <input type="text" id="id">
</form>
Run Code Online (Sandbox Code Playgroud)

小智 5

视图接收请求“给我一个位于此 URL 的页面”并返回响应“好的 - 这是一个模板和一些上下文”。在您看来,响应是由 render() 函数返回的,并且渲染函数希望将请求作为第一个参数 - 您将给出响应。

如果您想访问视图的响应,您可以将其分配给一个变量而不是返回它(您必须稍后实际返回它或类似的内容)。

 response = render(request, "app1/figure_data_page.html", context, RequestContext(request))
 print(response)
 context['response'] = response
Run Code Online (Sandbox Code Playgroud)

但是要求它作为视图参数并没有多大意义(除非您需要完全不同的视图的响应),因为视图本身应该生成响应。