Почему я получаю ошибку 404 "Страница не найдена
Я пытаюсь создать смену пароля и смену имени пользователя для моих пользователей, но это вышло как страница не найдена 404 ошибка, показанная ниже, где я делаю неправильно, это кажется мне нормальным:
urls.py
urlpatterns = [
path('forget/', views.forget, name='forget'),
path('', views.login_user, name='login'),
path('home/', views.home, name='home'),
path('logout/', views.logout_view, name='logout'),
path('register/', views.register_view, name='register'),
path('edit-register/', views.edit_register_view, name='edit_register'),
path('change-password/', views.password_change, name='password_change'),
path('reset-password/', views.PasswordReset.as_view(), name='password_reset'),
path('reset-password-done/', views.PasswordResetDone.as_view(), name='password_reset_done'),
path('reset-password/<uidb64>/<token>/', views.PasswordResetConfirm.as_view(), name='password_reset_confirm'),
path('reset-password-complete/', views.PasswordResetComplete.as_view(), name='password_reset_complete'),
]
views.py
def forget(request):
msg = None
# Get userid from session
userid = request.session.get('userid')
print(userid)
# Get user object from User database
user = get_object_or_404(User, id=userid)
if request.method == 'POST': # check for the post request body
form = ForgetForm(request.POST, instance=user)
if form.is_valid():
user = form.save()
print(form.cleaned_data.get('password1'))
msg = 'user password updated'
return redirect('/login')
else:
msg = 'form is not valid'
else:
form = SignUpForm()
return render(request, 'forget.html', {'form': form, 'msg': msg})
forms.py
class forgetForm(forms.Form):
username = forms.CharField(
widget=forms.TextInput(
attrs={
"class": "form-control"
}
)
)
password1 = forms.CharField(
widget=forms.PasswordInput(
attrs={
"class": "form-control"
}
)
)
password2 = forms.CharField(
widget=forms.PasswordInput(
attrs={
"class": "form-control"
}
)
)
Дайте мне знать, если вам, ребята, нужны еще какие-нибудь вещи от меня
Ошибка говорит о том, что пользователь с таким ID не был найден при выполнении этой строки.
user = get_object_or_404(User, id=userid)
Вы получаете идентификатор пользователя из хранимой сессии:
userid = request.session.get('userid')
Возможно, вы неправильно заполнили значение для этого. Убедитесь, что оно было правильно сохранено для ID текущей сессии . Вы можете проверить это, проверив sessionid
в cookies (он должен быть виден в разделе заголовков запроса в браузере) и посмотрев его значения в таблице django_session
в вашей базе данных. Ключ userid
должен быть там.
Альтернативой может быть попытка обратиться вместо request.user
конкретно к request.user.id
. Обратите внимание, что request.user
также заполняется на основе данных сессии .
Если все вышеперечисленное не сработало, проверьте, действительно ли ID пользователя существует в вашей базе данных пользователей.