☝🏻 마이프로필 수정하기
1. 마이 프로필 수정 url
#core/urls.py
from django.contrib.auth import views as auth_views
from django.urls import path
from . import views
urlpatterns = [
...
path('mypage/', views.mypage, name='mypage'), #마이페이지
path('mypage/edit/', views.mypage_edit, name='mypage_edit'), #마이페이지수정
...
]
2. 마이 프로필 수정 템플릿 만들기
html 버튼으로 < onclick="location.href='edit/';" > # http://127.0.0.1:8000/mypage/edit/
#core/mypage.html
...
<!-- 가입한 스터디 목록/프로필 수정 -->
<div class="px-14 mt-5">
<button class="h-12 bg-gray-200 w-full text-black text-md rounded hover:shadow hover:bg-gray-300 mb-2">관심 스터디 목록</button>
<button class="h-12 bg-gray-200 w-full text-black text-md rounded hover:shadow hover:bg-gray-300 mb-2">가입한
스터디 목록</button>
<button type="button" class="h-12 bg-blue-700 w-full text-white text-md rounded hover:shadow hover:bg-blue-800" onclick="location.href='edit/';">프로필 수정</button>
</div>
...
# core/mypage_edit.html
{% extends 'base.html' %}
{% block title %}마이페이지 수정 | {% endblock %}
{% block content %}
<div class="py-20">
<div class="max-w-md mx-auto bg-white rounded-xl shadow-md overflow-hidden md:max-w-md">
<div class="md:flex">
<div class="w-full p-2 py-10">
<form method="post">
{% csrf_token %}
<!-- 유저 아이디/닉네임/자기소개 -->
<div class="flex flex-col text-center mt-3 mb-4">
<span class="text-2xl font-medium">{{ posts.user_id }}</span>
<span class="text-md text-gray-400">@{{ posts.user_nickname }}</span>
<span class="text-md text-gray-400">{{ posts.user_name }}</span>
</div>
<div class="flex flex-col text-center mt-3 mb-4">
<input type="text" name="user_bio" id="user_bio" value="{{ posts.user_bio }}">
</div>
<!-- 태그 -->
<div class="px-16 mt-3 text-center">
<span
class="bg-gray-100 h-5 p-1 px-3 rounded cursor-pointer hover:shadow hover:bg-gray-200">#art</span>
<span
class="bg-gray-100 h-5 p-1 px-3 rounded cursor-pointer hover:shadow hover:bg-gray-200">#photography</span>
<span
class="bg-gray-100 h-5 p-1 px-3 rounded cursor-pointer hover:shadow hover:bg-gray-200">#music</span>
</div>
<!-- 가입한 스터디 목록/프로필 저장 -->
<div class="px-14 mt-5">
<button class="h-12 bg-gray-200 w-full text-black text-md rounded hover:shadow hover:bg-gray-300 mb-2">관심 스터디 목록</button>
<button class="h-12 bg-gray-200 w-full text-black text-md rounded hover:shadow hover:bg-gray-300 mb-2">가입한
스터디 목록</button>
<input type="submit" value="프로필 저장"
class="h-12 bg-blue-700 w-full text-white text-md rounded hover:shadow hover:bg-blue-800"></a>
</div>
</form>
</div>
</div>
</div>
</div>
{% endblock %}
3. 마이 프로필 수정 view
#core/views.py
from django.shortcuts import render, redirect
from django.contrib.auth import login
from django.views.decorators.csrf import csrf_exempt
from django.contrib.auth.decorators import login_required
#모델 가져오기
from .models import User
from room.models import Room
#마이페이지
@login_required
def mypage_edit(request):
res_data = {}
user = request.user
res_data['posts'] = {
'user_id' : user.username, # 회원아이디
'user_nickname' : user.nickname, # 닉네임
'user_name' : user.name, # 닉네임
'user_bio' : user.bio, # 자기소개
}
if request.method == 'POST': # post로 들어올 경우
user_bio = request.POST['user_bio'] # 자기소개
user.bio = user_bio
user.save() #저장
return redirect('mypage')
else:
return render(request, 'mypage_edit.html', res_data)
'FrameWork > Django' 카테고리의 다른 글
8월 10일(수) 검색필터 Q (0) | 2022.08.10 |
---|---|
8월 9일(월) (0) | 2022.08.10 |
8월 4일(목) 게시글 비밀번호 만들기 (0) | 2022.08.04 |
8월 1일(월) 질문 (0) | 2022.08.01 |
7월 27일(수) 게시글 작성자 (0) | 2022.07.28 |