#5 마이페이지 세부 기능 구현

saiy17·2021년 9월 7일
0

Face Out

목록 보기
5/6
post-thumbnail

1. 탈퇴 기능 구현

# 탈퇴 구현
@app.route('/delete_account', methods=['GET', 'POST'])
def delete_account():
    delete_user = db_session.query(User).filter_by(u_id=session['u_id']).first()
    delete_question_user = db_session.query(QuestionContent).filter_by(writer=session['u_id']).all()
    delete_image_user = db_session.query(ImageInfo).filter_by(user=session['u_id']).all()

    db_session.delete(delete_user)
    for question_user in delete_question_user:
        db_session.delete(question_user)
    for image_user in delete_image_user:
        db_session.delete(image_user)
    db_session.commit()
    session.clear()

    return render_template('/user_templates/main.html',logged_in=False)

<script type="text/javascript">
	function doThing(event) {
		event.preventDefault();
		confirm('정말 탈퇴하시겠습니까?') ?
		location.href = '/delete_account' :
		null;
	};
</script>
<button class="btn btn-secondary" name="delete_account" type="button" style="height:50px; text-align:center; line-height:10px; font-size:20px;" value=False onclick="doThing(event)">탈퇴</button>
👉 탈퇴 버튼을 누르면 '정말 탈퇴 하시겠습니까?' 라는 알림창이 뜸. '확인'을 누르면 탈퇴 기능이 실행되고 취소를 누르면 다시 mypage로 돌아옴

2. 마이페이지 내 image 저장 기능 구현

# save_file.html에서 마이페이지에 저장 버튼 눌렀을 때 처리
@app.route('/mypage_image', methods=['GET', 'POST'])
def mypage_image():
    image_extenstion = ['ai', 'bmp', 'jpeg', 'jpg', 'jpe', 'jfif', 'jp2', 'j2c', 'pcx', 'psd', 'tga', 'taga',
                        'png', 'tif', 'tiff']
    video_extenstion = ['mp4', 'm4v', 'avi', 'wmv', 'mwa', 'asf', 'mpg', 'mpeg', 'ts', 'mkv', 'mov', '3gp', '3g2','gif',
                        'webm']

    filename = request.args.get('filename', '파일이름')
    file_extenstion = filename.split(".")[-1]

    if file_extenstion in image_extenstion:  # 단체 사진이 이미지 파일인 경우,
        path = './member_img_downloads/' + filename # 이미지는 썸네일을 여기서 가져다 쓰고
    elif file_extenstion in video_extenstion:  # 단체 사진이 비디오 파일인 경우,
        fn = filename.split(".")[0] + ".jpg"
        path = './thumnail/' + fn       # 비디오는 썸네일을 여기서 가져다 씀
    else:
        flash('예기치 못한 오류가 발생했습니다.')
        return render_template('/user_templates/save_file.html')

    if session.get('u_id'):
        image = ImageInfo()
        image.url = path
        image.user = session['u_id']
        image.date = datetime.now()
        image.name = filename

        db_session.add(image)
        db_session.commit()
        return redirect('/mypage')
    else:
        flash('로그인 후 이용가능합니다')
        return render_template('/user_templates/main.html')

3. 마이페이지 내 image 삭제 기능 구현

# 마이페이지/내 사진에서 삭제버튼 눌렀을 때 처리
@app.route('/delete_image', methods=['GET', 'POST'])
def delete_image():
    name = request.args.get('name', '파일이름')
    i_delete = db_session.query(ImageInfo).filter_by(name=name).first()
    if i_delete:
        db_session.delete(i_delete)
        db_session.commit()
        flash('글이 삭제되었습니다.')
        return redirect('/mypage')
    else:
        return render_template('/user_templates/main.html')

0개의 댓글