Добавление диктонарных значений при использовании 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
Я внес несколько изменений в свой код, но, судя по скриншоту, у меня все еще есть проблемы.
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.