Django: как вернуться в никуда?

#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("../") @Abdullah

3. как и раньше.перенаправьте меня в корневой каталог

4. Да, вы правы, это перенаправление на root. Попробуйте return HttpResponseRedirect(request.path_info) . @Abdullah

5. это цикл перенаправления enter infinity. (я тоже пробовал это, но это должно сработать.странно)