Функция Django HttpResponseRedirect()

flag = 0
folder_id = 0
if FolderEntries.objects.filter(entry = entry_id).exists():
   print("=======================yes in folder")
   flag = 1
   folder_object = FolderEntries.objects.get(entry = entry_id)
   folder_entries_object = model_to_dict(folder_object)
            
   print("-------------------------", folder_entries_object)
   folder_id = folder_entries_object['folder']
else:
   flag = 0
        
        
if flag == 1:
           
   returnHttpResponseRedirect('folder/'+str(folder_id)+'/') 
else:
   if request.session.get('HTTP_REFERER', None):
       HTTP_REFERER = request.session.get('HTTP_REFERER')
       del request.session['HTTP_REFERER']
       return HttpResponseRedirect(HTTP_REFERER)
   return HttpResponseRedirect('editentry/'+str(entry_id))

В данном случае, если флаг = 1, это перенаправляет меня на 2 адреса, а именно:- http://127.0.0.1:8000/admin/form-entries/edit-entry/folder/174/

url "folder/174" - это url, который мне нужен. Но я получаю нежелательный url "admin/form-entries/edit-entry/"
. Что я делаю не так, пожалуйста, подскажите мне. Я начинающий разработчик django

Спасибо и пожелания Abhishek

Просто добавьте прямую косую черту в HttpResponseRedirect

return HttpResponseRedirect('/folder/'+str(folder_id)+'/')

url должен начинаться со слэша, иначе он будет рассматриваться как относительный url.

В дополнение к ответу @ilyasbbu, если вы используете python 3.6+, рассмотрите возможность использования f-string как более элегантный способ работы со строками.

return HttpResponseRedirect(f'/folder/{folder_id}/')
Вернуться на верх