#python #django #redirect #return
#python #django #перенаправление #Возврат
Вопрос:
(извините за мой плохой английский)
привет, ман. у меня есть такое представление в django:
if request.user.is_authenticated:
favelan = get_object_or_404(elan,id = id)
isfav = True
if favelan.favorit.filter(id = request.user.id).exists():
favelan.favorit.remove(request.user)
messages.success(request,'Elan Uluzlulardan Silindi!')
isfav = False
return redirect("/",{'isfav':isfav})
else:
favelan.favorit.add(request.user)
messages.success(request,'Elan Uluzlulara Elave Olundu!')
isfav = True
return redirect("/",{'isfav':isfav})
return redirect('/hesablar/qeydiyyat')
я хочу, чтобы это представление перенаправляло пользователя в никуда.как я это делаю? я пытался:
reqabspath = request.path
return redirect(reqabspath,{'isfav':isfav})
но это не работает.я хочу перенаправить пользователя в никуда. пожалуйста, помогите мне. спасибо сейчас.
Комментарии:
1. Можете ли вы указать, что вы имеете в виду перенаправление пользователя в никуда
2. У меня есть кнопка «Добавить в избранное» на нескольких моих страницах. Когда нажимается эта кнопка, она направляет меня в корневой каталог. Я хочу, чтобы это никуда меня не направляло. Надеюсь, я вам расскажу.
3. Верните пустой ответ с кодом 204.
Ответ №1:
Вы можете использовать render
from django.shortcuts import render
...
return render(request, 'yourTemplate.html', {'isfav': isfav})
Ответ №2:
Вы можете перенаправить на страницу, на которой пользователь был до отправки запроса с return HttpResponseRedirect(request.META['HTTP_REFERER'])
. Таким образом, пользователь останется на той же странице после запроса.
from django.http import HttpResponseRedirect
def your_function(self, request):
...
return HttpResponseRedirect(request.META['HTTP_REFERER'])
META['HTTP_REFERER']
хранит URL ссылающейся страницы, если таковая имеется. Итак, вы просто перенаправляете на него. Но имейте в виду, этот заголовок не требуется, поэтому было бы лучше использовать default_url на случай, если браузер не отправит HTTP_REFERER
заголовок. Это можно было бы обработать следующим образом:
return HttpResponseRedirect(request.META.get('HTTP_REFERER', YOUR_DEFAULT_URL))
Таким образом, он будет перенаправлять на HTTP_REFERER
, если он существует, а если нет, он будет перенаправлять на YOUR_DEFAULT_URL
Комментарии:
1. это не работает.несколько дней назад я попробовал это:
return redirect("./",{})
но это не работает, как ваш ответ.но почему (да, я импортирую httpresponsereirect)2. Странно, это работает в моем проекте. Можете ли вы указать, что именно не работает, что происходит после этого перенаправления? Попробуйте
return HttpResponseRedirect("../")
@Abdullah3. как и раньше.перенаправьте меня в корневой каталог
4. Да, вы правы, это перенаправление на root. Попробуйте
return HttpResponseRedirect(request.path_info)
. @Abdullah5. это цикл перенаправления enter infinity. (я тоже пробовал это, но это должно сработать.странно)