Добавление диктонарных значений при использовании HttpResponseRedirect

Я хочу перенаправить на существующую страницу и отобразить набор запросов, который будет определяться на основе значений, отправленных через форму. Значения словаря, которые я получаю из функции get_context_data, отображаются правильно. Значения словаря, которые я пытаюсь добавить в функции post, отображаются неправильно.

def post(self, request, *args, **kwargs):
    RoomBookingsForm    = BookRoomsForm(request.POST or None)
    self.object = self.get_object() # assign the object to the view
    context = self.get_context_data( *args, **kwargs)

    context.update({'room_type_queryset': RoomType.objects.all().filter()})

    print("all context values")
    print(context)

    if request.method == 'POST':
    
        return HttpResponseRedirect(self.request.path_info, context )
       

Кроме context.update я также попробовал context['room_type_queryset'] = RoomType.objects.all().filter()

На основе двух вышеприведенных операторов печати я получил

all context values
{'object': <AmericanHotel: Caesars Palace>, 'americanhotel': <AmericanHotel: Caesars Palace>, 'slug': 'caesars-palace', 'view': <hotel.views.HotelDetailSlugView object at 0x00000210575117F0>, 'cart': <Cart: 5>, 'hotel_extra_photos': <QuerySet [<AmericanHotelPhoto: Caesars Palace>, <AmericanHotelPhoto: Caesars Palace>, <AmericanHotelPhoto: Caesars Palace>, <AmericanHotelPhoto: Caesars Palace>, <AmericanHotelPhoto: Caesars Palace>, <AmericanHotelPhoto: Caesars Palace>, <AmericanHotelPhoto: Caesars Palace>, <AmericanHotelPhoto: Caesars Palace>, <AmericanHotelPhoto: Caesars Palace>]>, 'room_type': <QuerySet [<RoomType: Caesars Palace, Triple>, <RoomType: Caesars Palace, Double>]>, 'room_type_queryset': <QuerySet [<RoomType: Caesars Palace, Double>, <RoomType: Caesars Palace, Triple>]>}

Результаты из room_type правильно отображаются красным цветом.

{% for instance in room_type %}
     <H1 style="color:red">{{instance}}</H1>
{% endfor %}

Результаты из room_type_queryset не появляются.

{% for instance in room_type_queryset %}
    <H1 style="color:blue">{{instance}}</H1>
{% endfor %}

Update

Я внес несколько изменений в свой код, но, судя по скриншоту, у меня все еще есть проблемы.

enter image description here

   def post(self, request, *args, **kwargs):
            RoomBookingsForm    = BookRoomsForm(request.POST or None)
            self.object = self.get_object() # assign the object to the view
            context = self.get_context_data( *args, **kwargs)
            context['room_type_results'] = RoomType.objects.all().filter()
<h1>Will the results appear</h1>
<h1>{{room_type_results}}</h1>
<p1>{{room_type_results}}</p1>
{{room_type_results}}
<h1>End of will the results appear</h1>

класс gfii6uk56dt4yre tufutuyiyviyxf tttut tfutfjtft tuf utd t

может быть, попробуйте:

some_form = request.POST.get("form_name")

В итоге я использовал

return render(request, self.template_name,context)

Я не понимал, что такой подход не изменит URL. Таким образом, использование этого подхода означало, что у меня все еще есть доступ к значению slug.

Я сделал print(request) и получил <WSGIRequest: POST '/hotel/detail/caesars-palace/'>, в данном случае 'caesars-palace' является значением slug.

А я нашел этот комментарий на другом сайте - " Здравствуйте! Большое спасибо за помощь! Разница между ними в том, что когда вы используете HttpResponse, вы отправляете контекстный словарь с url, так что это отображается как типичный сайт, но если вы используете HttpResponseRedirect, вы отправляете только url...? Правильно ли я понимаю? :D? .... Еще раз спасибо за помощь :D'

Если это верно, то я бы не смог решить свою проблему с помощью HttpResponseRedirect.

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