Django

[Django] user CRUD(7) - 회원 정보 및 비밀번호 수정(U)

기록하는_사람 2022. 12. 21. 19:24

회원 정보 수정

📌 회원 정보 수정

① profile.html에 정보 수정 버튼 생성.

<h1>PROFILE PAGE</h1>

<b>USERNAME</b><input type="text" value="{{ user }}"><br><br>
<b>EMAIL</b><input type="text" value="{{ user.email }}"><br><br>
<b>FNAME</b><input type="text" value="{{ user.first_name }}"><br><br>
<b>LNAME</b><input type="text" value="{{ user.last_name }}"><br><br>

<a href="{% url 'index' %}"><button>HOME</button></a>
<a href="{% url 'update' %}"><button>MOD</button></a>
<a href="{% url 'delete' %}"><button>DEL</button></a>

 

② update.html

<h1>UPDATE PAGE</h1>

<form method="post">
    {% csrf_token %}
    <input type="text" value="{{ user.username }}" disabled><br><br>
    <input name="umail" type="text" value="{{ user.email }}"><br><br>
    <input name="ufn" type="text" value="{{ user.first_name}}"><br><br>
    <input name="uln" type="text" value="{{ user.last_name }}"><br><br>

    <button>UPDATE</button>
    <a href="{% url 'index' %}"><button type="button">HOME</button></a>
</form>

 

③ acc/urls.py

from django.urls import path
from . import views

urlpatterns = [
    path('index/', views.index, name="index")   ,
    path('login/', views.userlogin, name="login"),
    path('logout/', views.userlogout, name="logout"),
    path('profile/', views.profile, name="profile"),
    path('delete/', views.delete, name="delete"),
    path('signup/', views.signup, name="signup"),
    path('update/', views.update, name="update")
]

 

④ acc/views.py

from django.shortcuts import render, redirect
from django.contrib.auth import authenticate, login, logout
from .models import User

# Create your views here.
...

def update(request):
    if request.method == "POST":
        u = request.user
        um = request.POST.get("umail")
        uf = request.POST.get("ufn")
        ul = request.POST.get("uln")
        u.email, u.first_name, u.last_name = um, uf, ul
        u.save()
        return redirect("profile")
    return render(request, "acc/update.html")

 

비밀번호 수정

📌 비밀번호 수정

① update.html에 비밀번호 수정 버튼 생성.

<h1>UPDATE PAGE</h1>

<form method="post">
    {% csrf_token %}
    <input type="text" value="{{ user.username }}" disabled><br><br>
    <input name="umail" type="text" value="{{ user.email }}"><br><br>
    <input name="ufn" type="text" value="{{ user.first_name}}"><br><br>
    <input name="uln" type="text" value="{{ user.last_name }}"><br><br>

    <button>UPDATE</button>
    <a href="{% url 'chpass' %}"><button type="button">CHANGE PASSWORD></button></a>
    <a href="{% url 'index' %}"><button type="button">HOME</button></a>
</form>

 

② chpass.html

 

<h1>CHANGE PASSWORD PAGE</h1>

<form method="post">
    {% csrf_token %}
    <input name="npass" type="password" placeholder="NEW PASSWORD"><br><br>
    <button>CHAGE</button>
    <a href="{% url 'index' %}"><button type="button">HOME</button></a>
</form>

 

③ acc/urls.py

from django.urls import path
from . import views

urlpatterns = [
    path('index/', views.index, name="index")   ,
    path('login/', views.userlogin, name="login"),
    path('logout/', views.userlogout, name="logout"),
    path('profile/', views.profile, name="profile"),
    path('delete/', views.delete, name="delete"),
    path('signup/', views.signup, name="signup"),
    path('update/', views.update, name="update"),
    path('chpass/', views.chpass, name="chpass")
]

 

④ acc/views.py

from django.shortcuts import render, redirect
from django.contrib.auth import authenticate, login, logout
from .models import User

# Create your views here.
...
 
def chpass(request):
    if request.method == "POST":
        u = request.user
        np = request.POST.get("npass")
        u.set_password(np)
        u.save()
        return  redirect("login")
    return render(request, "acc/chpass.html")