Как обновить пароль пользователя и сохранить его в базе данных с помощью django

Я пытаюсь разрешить администратору обновлять пароль, адрес электронной почты и имя пользователя сотрудников, но новый пароль, адрес электронной почты и имя пользователя не обновляются в моей базе данных, я сделал что-то не так в коде?

Ниже показано, как выглядит главная страница: enter image description here

На этом изображении показана следующая страница, на которой будут обновлены пароль персонала, имя пользователя и адрес электронной почты: enter image description here

views.py

def update(request, id):
    context = {}
    user = get_object_or_404(User, id=id)
    if request.method == "POST":

        user.save()
        return redirect("/allstaff")
    return render(request, 'allstaff.html', context)

urls.py

from django.urls import path
from . import views

urlpatterns = [
    #path('', views.index, name='index'),
    #path('login/', views.login_view, name='login_view'),
    path('register/', views.register, name='register'),
    path('adminpage/', views.admin, name='adminpage'),
    path('customer/', views.customer, name='customer'),
    path('logistic/', views.logistic, name='logistic'),
    path('forget/', views.forget, name='forget'),
    path('newblock/', views.newblock, name='newblock'),
    path('quote/', views.quote, name='quote'),
    path('profile/', views.profile, name='profile'),
    path('adminprofile/', views.adminprofile, name='adminprofile'),

    path('', views.login_user, name='login'),
    path('home/', views.home, name='home'),
    path('allstaff/', views.allstaff, name='allstaff'),
    path('delete/<int:id>/', views.delete, name='delete'),
    path('update/<int:id>/', views.update, name='update'),
    path('logout/', views.logout_view, name='logout'),
    path('register/', views.register_view, name='register'),
    path('edit-register/', views.edit_register_view, name='edit_register'),


]

updatestaff.html

Прежде всего, существует специальный тип для ввода паролей в HTML, который следует использовать для хранения паролей в почтовых запросах. <input type="password">

На ваш вопрос, Для того чтобы обновить пароль пользователя, вам следует использовать метод user.set_password. Посмотрите документацию здесь. По ссылке выше также показано, как изменить другие свойства пользователя.

В вашем файле views.py вы не принимаете запрашиваемые данные из формы. Поэтому сделайте следующее. Вот как:

def update(request, id):
    context = {}
    user = get_object_or_404(User, id=id)
    if request.method == "POST":
        # getting form input values from your HTML Form.
        username = request.POST.get('username')
        email = request.POST.get('Email')
        password = request.POST.get('password')
        
        user.username = username
        user.email = email
        user.set_password(password)
        user.save()
        return redirect("/allstaff")
    return render(request, 'allstaff.html', context)

Надеюсь, это ваш ответ.

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