Django: передавать запрос и ответ как параметры представления

У меня есть представление, которое принимает два параметра ( запрос, ответ). Но при вызове этого представления я получаю ошибку, которая гласит - "figure() missing 1 required positional argument: 'response'"

views.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))

urls.py

from django.urls import path
from . import views

urlpatterns = [
    path('', views.figure, name="figure")
]

figure_data.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>

Когда происходит обращение к url, к которому подключено представление, представлению предоставляется только "запрос", а не "ответ". Ответ, по сути, генерируется из функции render.

Фукция рендеринга должна выглядеть следующим образом (с заменой response на request):

return render(request, "app1/figure_data_page.html", context, RequestContext(request))

Представление получает запрос "дайте мне страницу по этому URL" и возвращает ответ "Ок - вот шаблон и некоторый контекст". В вашем представлении ответ возвращается функцией render(), а функция render хочет получить запрос в качестве первого аргумента - вместо этого вы отдаете ответ.

Если вы хотите получить доступ к ответу представления, вы можете присвоить его переменной, а не возвращать (вам придется вернуть его или что-то подобное позже).

 response = render(request, "app1/figure_data_page.html", context, RequestContext(request))
 print(response)
 context['response'] = response

Но запрашивать его в качестве аргумента представления не имеет большого смысла (если только вам не нужен ответ для совершенно другого представления), поскольку представление должно само генерировать ответ.

Вернуться на верх