새해첫 TIL이라쓰고 3일치(2)

seonghyeon·2022년 1월 3일
0

------- (2)-------

  • 마이 프로필 페이지 프로필 사진 과 닉네임 변경 업로드 구현
try:
	#닉네임input 기본값은 현재 닉네임
        nick_receive = request.form['nick_give'] # input 닉네임
        
        file = request.files['file_give'] #upload 파일
        
        
        token_receive = request.cookies.get('token_name')
        payload = jwt.decode(token_receive, SECRET_KEY, ///)
        user = db.user.find_one({'id': payload['id']})
        user_id = user['id']
        #토큰에저장된 유저정보로 유저 id를 받아온다

        
        extension = file.filename.split('.')[-1]


        today = datetime.now()
        mytime = today.strftime('%Y-%m-%d-%H-%M-%S')
        filename = f'{user_id}-{mytime}'

        profile = db.pic.find_one({'id': user_id})
        
        #현재 프로필 사진이 있는경우에만 기존프로필 사진 삭제
        if profile != None :
            profile_pic = profile['img']
            os.remove( f'instagram/static/images/profile_images/{profile_pic}' )
            db.pic.delete_one({ 'id': user_id })

        # 파일 저장 경로 설정 (파일은 db가 아니라, 서버 컴퓨터 자체에 저장됨)
        save_to = f'instagram/static/images/profile_images/{filename}.{extension}'
        # 파일 저장!
        file.save(save_to)
        
        
        doc = {'id': user_id, 'img':f'{filename}.{extension}'}
        db.pic.insert_one(doc)
        
        #닉네임값을 빈값으로 설정했을때를 제외하는 처리.
        if nick_receive != '' :
            db.user.update_one({'id': user_id },{'$set':{'nick': nick_receive }})

        return jsonify({'result':'success'})
        
       
    # 파일을 바꾸고싶지 않을때 닉네임만 바꾸는 예외처리    
    except:
        nick_receive = request.form['nick_give'] # input 닉네임
        
        token_receive = request.cookies.get('mytoken')
        payload = jwt.decode(token_receive, SECRET_KEY, algorithms='HS256')
        user = db.user.find_one({'id': payload['id']})
        user_id = user['id']

        if nick_receive != '' :
            db.user.update_one({'id': user_id },{'$set':{'nick': nick_receive }})

        return jsonify({'result':'success'})


  • 마이 페이지 프로필 편집되고 비밀번호 변경됨.

0개의 댓글