Почему я получаю ошибку 404 "Страница не найдена

Я пытаюсь создать смену пароля и смену имени пользователя для моих пользователей, но это вышло как страница не найдена 404 ошибка, показанная ниже, где я делаю неправильно, это кажется мне нормальным:

enter image description here

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 пользователя существует в вашей базе данных пользователей.

Вернуться на верх