REST API

justyoon·2023년 3월 17일
0

AI5 Python/Django

목록 보기
4/31
post-thumbnail

코드 정리해보기

@app.route('/')
def home():
comments = list(userComment.find({},{'_id':False}))
return render_template('index.html',comments=comments)

홈페이지를 호출하는 함수입니다.

  1. @app.route('/') 기본 route 명령어로 주소를http://localhost:5000 으로 지정하고 접속하게 해줍니다.

  2. comments = list(userComment.find({},{'_id':False})) : MongoDB에 저장된 모든 댓글을 가져오는 함수입니다.
    + 출력시 깔끔하게 보이기 위해서 데이터의 _id필드는 제외하고 모든 데이터를 저장합니다.

  3. return render_template 함수로 index.html 템플릿 파일 호출, comments 리스트를 index.html 파일로 전달, 브라우저에 리턴합니다.

@app.route('/profile/<usernum>',methods=["GET"])
def profile(usernum):
    user = db.user_info.find_one({'usernum':int(usernum)},{'_id':False})
    print(user)
    modify = url_for('input',usernum=usernum)
    return render_template('user_profile.html',user=user,modify=modify)

멤버 번호별로 /profile/<usernum> URL을 처리하는 함수입니다.
usernum 인자에 유저 ID가 전달됩니다.

  1. user = db.user_info.find_one 함수를 사용해 MongoDB 서버에서 usernum과 일치하는 유저를 찾아줍니다. 이 유저 정보를 가져온 후 render_template을 사용해 user_profile.html 호출합니다.

  2. user_profile.html 템플릿에서 user 객체에 저장된 정보를 표시하고 modify 변수를 사용해 유저 정보를 수정할 수 있게 URL을 생성해줍니다.
    + URL은 input 함수로 연결됩니다.

@app.route('/profile//input',methods=["GET","POST"])
def input(usernum):
if request.method == "GET":
user = db.user_info.find_one({'usernum':int(usernum)},{'_id':False})
return render_template('profile_detail_input.html',user=user)
elif request.method == "POST":
form = request.form
doc = {
'mbti': form['mbti'],
'email':form['email'],
'photo_url':form['photo_url'],
'blog_url':form['blog_url'],
'interest':form['interest'],
'aboutme':form['aboutme'],
'javascript':form['Javascript'],
'HTML':form['HTML'],
'CSS':form['CSS'],
'Python':form['Python'],
'Promise':form['Promise']
}
db.user_info.update_one({"usernum": int(usernum)}, {"$set": doc})
print(doc)
return redirect(url_for('profile', usernum=int(usernum)))

유저 프로필 정보를 입력하는 페이지를 처리합니다.

  1. GET 요청일 경우, 해당 유저의 정보를 조회하고 프로필 정보를 입력할 수 있는 페이지를 호출합니다.

    상세 설명 추가
    예를 들어 '/profile/123/input' URL로 GET 요청이 들어오면 123 유저정보를 불러와서 'profile_detail_input.html' 템플릿 파일을 호출하고 유저에게 리턴합니다.
    이때 호출에 사용되는 유저 객체의 속성들은 MongoDB에서 찾아서 가져온 데이터입니다.

  2. POST 요청일 경우, 입력받은 form 데이터들을 MongoDB 데이터베이스에 업데이트 하고, 유저 프로필 페이지로 리디렉트합니다.

    상세 설명 추가
    반대로 POST 요청이 들어오면 form 데이터를 키값으로 변환한 뒤 MongoDB에 업데이트합니다. 이때 업데이트 대상은 'usernum'을 입력받은 유저입니다.
    업데이트 내용은 form 데이터를 바탕으로 구성합니다. 이후, 'redirect' 함수를 사용하여 유저 프로필 페이지로 리디렉트합니다.

이렇게 Flask가 지원하는 라우팅 기능과 MongoDB를 이용한 데이터베이스 작동방식을 확인할 수 있습니다.

profile
with gratitude, optimism is sustainable

0개의 댓글