Django redirect() не перенаправляет, а обновляет ту же страницу
view.py
@login_required(login_url='index', redirect_field_name=None)
def new_character(request):
if request.method == 'POST':
character_form = CharacterForm(request.POST)
if character_form.is_valid():
new_character = character_form.save(commit=False)
new_character.creator = request.user
new_character.save()
# If new_character has a primary key (pk) then it
# means it was saved to the database.
if new_character.pk:
# TODO: For some reason this doesn't work.
redirect('list_characters')
else:
character_form = CharacterForm()
return render(request, 'characters/new-character.html', {'character_form': character_form})
urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.list_characters, name='list_characters'),
path('new/', views.new_character, name='new_character'),
]
Я проверил, и new_character.pk
принудительно установлен в True. Однако перенаправления не происходит, и вместо этого та же страница просто обновляется.
Проблема здесь в том, что вы не возвращаете redirect
, что приводит к тому, что return render(request, 'characters/new-character.html'...
бьется, изменяясь от:
redirect('list_characters')
To:
return redirect('list_characters')
Должен решить проблему