Django не перенаправляет из-за ошибки Page not Found
Я создаю функцию редактирования профиля, которая обновляет профиль и перенаправляет обратно на страницу профиля текущего пользователя. В настоящее время обновление работает нормально, но перенаправление дает мне ошибку "страница не найдена". Почему это происходит?
url patterns:
urlpatterns = [
path('change-profile/', users_views.change_profile, name='change_profile'),
path('user/<str:username>/', UserProfileView.as_view(), name='user-profile'),
...
]
views.py
@login_required
def change_profile(request):
if request.method == 'POST':
u_form = UserUpdateForm(request.POST, instance=request.user)
p_form = ProfileUpdateForm(request.POST, request.FILES, instance=request.user.profile)
if u_form.is_valid() and p_form.is_valid():
u_form.save()
p_form.save()
messages.success(request, 'Profile Updated')
return redirect('user-profile', {'username':request.user.username})
else:
u_form = UserUpdateForm(instance=request.user)
p_form = ProfileUpdateForm(instance=request.user.profile)
context = {
'u_form' : u_form,
'p_form' : p_form
}
return render(request, 'users/change_profile.html', context)
Функция redirect(…)
[Django-doc] использует именованные параметры, а не словарь, поэтому:
return redirect('user-profile', username=request.user.username)
Вы отправили {'username': 'TestPWRS' }
в качестве имени пользователя, и (вероятно) не существует пользователя с таким именем, только пользователь с именем TestPWRS
.