#python #django
#python #django
Вопрос:
У меня есть возможность удалить запись при нажатии на привязку на индексной странице.Я хочу перенаправить на текущую страницу после запуска этого view.in urls.py:
(r'^airAgency/(?P<key>[a-zA-Z0-9] )/tour/delete/(?P<tour_id>d )/$','airAgency.views.deletetour'),
(r'^airAgency/(?P<key>[a-zA-Z0-9] )/$','airAgency.views.index'),
в views.py:
def deletetour(request,key,tour_id):
tour=Tour.objects.get(pk=tour_id)
tour.delete()
top5news=News.objects.filter(User__agentposition__AgentCode__id=agn.id).order_by('-ActionDate')[:5]
return render_to_response('airAgency/index.html/',{'top5news':top5news},context_instance=RequestContext(request))
представьте, что теперь браузер находится по этому адресу:
http://127.0.0.1:8080/airAgency/mastane
когда я нажимаю на привязку, которая перенаправляет меня на удаление нашего просмотра, после удаления записанного браузер находит этот URL:
http://127.0.0.1:8080/airAgency/mastane/tour/delete/4/airAgency/index.html/
но я хочу снова перенаправить на первый URL:
http://127.0.0.1:8080/airAgency/mastane
Обратите внимание, что мне тоже нужен объект RequestContext.Я имею в виду, что HttpResponseRedirect не подходит для меня.
tnx заранее
Комментарии:
1. Почему HttpResponseRedirect не подходит для вашего? Вы говорите, что вам нужно перенаправить, для этого используется HttpResponseRedirect .
2. потому что мне тоже нужен context_instance=RequestContext (запрос). Я не могу передать этот объект при использовании HttpResponseRedirect.
Ответ №1:
Если вы решите использовать HttpResponseRedirect
, попробуйте это:
return HttpResponseRedirect(request.META.get('HTTP_REFERER','/'))
Ответ №2:
Как только вы находитесь в обработчике для другого URL-адреса, вы не можете изменить URL-адрес без перенаправления. Если вам нужно сохранить состояние исходного URL-адреса, когда вы вернетесь к нему, закодируйте его в get-параметры URL-адреса, на который вы перенаправляете обратно.
Кроме того, не уверен, что вы уже делаете это, но удаление записи действительно должно обрабатываться в POST, а не в get .
Надеюсь, это поможет!
Комментарии:
1. Вы имеете в виду, что я должен обработать это в индексном представлении? как я могу это сделать? каков правильный способ?
2. Обратите внимание, что мне нужно отправить некоторые объекты, такие как ‘top5news’, при перенаправлении на текущую страницу.
3. если вам нужен context_instance, предположительно, существует некоторый конечный набор переменных, из context_instance, которые вам нужно отобразить airAgency/index.html правильно после удаления, верно? Вы не можете включать произвольные переменные python в перенаправление, но вы можете индивидуально кодировать переменные с URL-адресом, например, возвращать HttpResponseRedirect(«/path?» urllib.urlencode({‘deletedname’: ‘thename’}))
Ответ №3:
Если вам нужен объект RequestContext только для отображения некоторого сообщения об успешном удалении, вы можете использовать фреймворк django.contrib.messages.