본문 바로가기
수업(국비지원)/Django

[Django] 회원가입, 로그아웃, 업데이트

by byeolsub 2023. 4. 27.

 📌

  • veiws.py main 아래 추가부분
def logout(request) :
    auth.logout(request) #세션종료
    return HttpResponseRedirect("../login/")

# urls.py : info/<std:id>/ => info요청 url에서 id값을 id를 매개변수로 전달
def info(request,id) :
    try : 
        login = request.session["login"]
    except : # 로그아웃상태.
        context = {"msg":"로그인하세요","url":"../../login"}
        return render(request,"alert.html",context)
    else : #로그인 된 경우
        if login == id or login =='admin' :
            member = Member.objects.get(id=id)
            return render(request,"member/info.html",{"mem":member})
        else : # 본인아닌경우
            context = {"msg":"본인만 조회 가능합니다.","url":"../../main"}
            return render(request,"alert.html",context)
        
def update(request,id) :
    try : 
        login = request.session["login"]
    except : # 로그아웃상태.
        context = {"msg":"로그인하세요","url":"../../login"}
        return render(request,"alert.html",context)
    else : #로그인 된 경우
        if login == id or login =='admin' :
            update_rtn(request,id)
        else : # 본인아닌경우
            context = {"msg":"본인만 조회 가능합니다.","url":"../../main"}
            return render(request,"alert.html",context)
        
def update_rtn(request,id) :
    if request.method !="POST" :
        member = Member.object.get(id=id)
        return render(request,"member/update.html",{"mem":member})
    else :
        return render(request,"member/info.html",{"mem":member})
  • update_rtn 수정된 변천사1
def update_rtn(request,id) :
    if request.method !="POST" :
        member = Member.object.get(id=id)
        return render(request,"member/update.html",{"mem":member})
    else :
#        return render(request,"member/info.html",{"mem":member})        
        #비밀번호 검증
        #비밀번호 오류시 비밀번호 오류 메세지, update.html 페이지 출력
        #member.pass1 : db에 등록된 비밀번호
        #request.POST["pass"] : 입력된 비밀번호
        if request.POST["pass"] == member.pass1 : #입력pw와 dbpw가 같다면
            pass
        else : #같지않다면 오류메세지와 업데이트페이지 출력
            context = {"msg":"비밀번호 오류입니다.",\\
                       "url":"../../update/"+id+"/"}
            return render(request,"alert.html",context)
  • update_rtn 수정된 변천사2
def update_rtn(request,id) :
    if request.method !="POST" :
        member = Member.object.get(id=id)
        return render(request,"member/update.html",{"mem":member})
    else :
#        return render(request,"member/info.html",{"mem":member})        
        #비밀번호 검증
        #비밀번호 오류시 비밀번호 오류 메세지, update.html 페이지 출력
        #member.pass1 : db에 등록된 비밀번호
        #request.POST["pass"] : 입력된 비밀번호
        if request.POST["pass"] == member.pass1 : #입력pw와 dbpw가 같다면
            member = Member(id=request.POST["id"],\\
                         pass1=request.POST["pass"],\\
                         name=request.POST["name"],
                         gender=request.POST["gender"],
                         tel=request.POST["tel"],
                         email=request.POST["email"],
                         picture=request.POST["picture"])
            #id값 존재. id값 없으면 insert
            member.save() #update 문장 실행.
            return HttpResponseRedirect("../../info/"+id+"/")
        else : #같지않다면 오류메세지와 업데이트페이지 출력
            context = {"msg":"비밀번호 오류입니다.",\\
                       "url":"../../update/"+id+"/"}
            return render(request,"alert.html",context)

📌 join.html

{% extends "base1.html" %} {# 한줄주석#}
{% block content %}
<script type="text/javascript">
   function win_upload() {
	   var op = "width=500, height=500, left=50,top=150";
	   open("../picture/","",op);
   }
</script>
<form action="../join/" name="f" method="post">
  {%  csrf_token  %}
 <input type="hidden" name="picture" value="" >
 <table><tr><td rowspan="4" valign="bottom">
   <img src="" width="100" height="120" id="pic"><br>
 <font size="1"><a href="javascript:win_upload()">사진등록</a></font>
 </td><th>아이디</th><td><input type="text" name="id"></td></tr>
 <tr><th>비밀번호</th><td><input type="password" name="pass"></td></tr>
 <tr><th>이름</th><td><input type="text" name="name"></td></tr>
 <tr><th>성별</th>
     <td><input type="radio" name="gender" value="1" checked>남
         <input type="radio" name="gender" value="2">여</td></tr>
<tr><th>전화번호</th>
    <td colspan="2"><input type="text" name="tel"></td></tr>
<tr><th>이메일</th>
    <td colspan="2"><input type="text" name="email"></td></tr>
<tr><td colspan="3"><input type="submit" value="회원가입"></td></tr>
 </table></form>
{% endblock %}

📌 info.html

{% extends "base1.html" %}
{% block content %}
<table class="w3-table-all w3-border"><caption>회원 정보 보기</caption>
  <tr><td rowspan="6" width="30%">
 <img src="/file/picture/{{mem.picture}}" width="200" height="210"></td>
    <th width="20%">아이디</th><td>{{mem.id}}</td></tr>
   <tr><th>이름</th><td>{{mem.name}}</td></tr>
   <tr><th>성별</th><td>{% if mem.gender == 1 %} 남
                        {% else %} 여
                        {% endif %}</td></tr>
   <tr><th>전화</th><td>{{mem.tel}}</td></tr>
   <tr><th>이메일</th><td>{{mem.email}}</td></tr>
   <tr><td colspan="2" class="w3-center">
     <a href="../../update/{{mem.id}}/">[수정]</a>
{% if request.session.login != 'admin' %}
     <a href="../../delete/{{mem.id}}/">[탈퇴]</a>
{% endif %}
</td></tr></table>
{% endblock content %}

📌 update.html

{% extends "base1.html" %}
{% block content %}
<script type="text/javascript">
   function  inputcheck(f) {
   if(f.pass.value == "") {
		   alert("비밀번호를 입력하세요");
		   f.pass.focus();
		   return false;
	   }
   }
   function win_passchg() {
	  var op = "width=500, height=250, left=50,top=150";
	  open("../../password/{{mem.id}}/","",op);
   }
   function win_upload(){
	   var op = "width=500,height=150,left=50, top=150";
	   open("../../picture/","",op);
   }
</script>

<form action="../../update/{{mem.id}}/" name="f" method="post"  onsubmit="return inputcheck(this)">
{%  csrf_token  %}
<input type="hidden" name="picture" value="{{mem.picture}}">
<table><caption>회원 정보 수정</caption>
<tr><td rowspan="4" valign="bottom">
  <img src="/file/picture/{{mem.picture}}"  width="100" height="120" id="pic"><br>
  <font size="1"><a href="javascript:win_upload()">사진수정</a></font>
</td><th>아이디</th>
<td><input type="text" name="id" readonly value="{{mem.id}}"></td></tr>
<tr><th>비밀번호</th><td><input type="password" name="pass" ></td></tr>
<tr><th>이름</th>
<td><input type="text" name="name" value="{{mem.name}}"></td></tr>
<tr><th>성별</th><td><input type="radio" name="gender" value="1"
     {% if mem.gender == 1 %}
                          checked
      {% endif %}>남
       <input type="radio" name="gender" value="2"
     {% if mem.gender == 2 %}
              checked
     {% endif %}>여</td></tr>
<tr><th>전화번호</th>
<td colspan="2"><input type="text" name="tel" value="{{mem.tel}}"></td></tr>
<tr><th>이메일</th><td colspan="2"><input type="text" name="email"
    value="{{mem.email}}"></td></tr>
<tr><td colspan="3"><input type="submit" value="회원수정">
<input type="button" value="비밀번호수정" onclick="win_passchg()">
</td></tr></table></form>
{% endblock content %}

📌 delete.html 회원탈퇴

{% extends "base1.html" %}
{% block content %}
<script type="text/javascript">
   function inputcheck(f) {
	   if(f.pass.value == "") {
		   alert("비밀번호를 입력하세요")
		   f.pass.focus();
		   return false;
	   }
	   return true;
   }
</script>
<form action="../../delete/{{id}}/" method="post" onsubmit="return inputcheck(this)">
{%  csrf_token  %}
<table>
   <caption>회원비밀번호 입력</caption>
   <tr><th>비밀번호</th>
       <td><input type="password" name="pass" /></td></tr>
   <tr><td colspan="2">
       <input type="submit" value="탈퇴하기" /></td></tr>
</table></form>
{% endblock %}

 

'수업(국비지원) > Django' 카테고리의 다른 글

[Django] 파일 업로드  (0) 2023.04.27
[Django] 회원탈퇴  (0) 2023.04.27
[Django] main페이지 생성  (0) 2023.04.27
[Django] 이미지 연동  (0) 2023.04.27
[Django] 로그인 오류 시 알람 처리  (0) 2023.04.27