인프런 커뮤니티 질문&답변

journeytosth님의 프로필 이미지

작성한 질문수

남박사의 파이썬으로 실전 웹사이트 만들기

이 부분에서 redirect대신 render_template을 사용해도 될까요?

해결된 질문

20.04.30 21:31 작성

·

314

2

안녕하세요 박사님~!

현재 로그인 페이지를 만드는 부분의 강의를 듣고 있는데요.

아래 코드에서 if data is None 일때, return값으로 redirect가 아닌 render_template("login.html")을 사용해도 무방한지 궁금하여 질문드립니다.

@app.route("/login", methods=["GET", "POST"])
def member_login():
    if request.method == "POST":
        email = request.form.get("email")
        password = request.form.get("pass")

        members = mongo.db.members
        data = members.find_one({"email": email})

        if data is None:
            flash("회원 정보가 없습니다.")
            # return render_template("login.html")
            return redirect(url_for("member_login"))

    else:
        return render_template("login.html")

답변 2

1

남박사님의 프로필 이미지
남박사
지식공유자

2020. 04. 30. 23:02

엄밀히 따지면 redirect 는 주소만 연결시켜주는 기능이고 render_template는 템플릿을 렌더링 하는 목적이라 서로 다른 기능이지만 너무 복잡하게 생각할 필요는 없을것 같습니다. 그래도 좀더 부연설명을 드리자면 redirect는 현재 세션 흐름의 결정을 direct한 주소에서 결정을 하게 되는 상황이고(현재 주소에서는 아무것도 안한게 됨) render_template는 현재 페이지에서 결정인 되는 상황입니다. 현재 강좌에서는 단순한 예시라 고민할 필요가 없는 부분이지만 만약 규모가 크고 구조가 복잡한 사이트를 제작할때는 이런 부분도 생각해볼 부분들이 많이 있으니 이정도만 참고하시면 될듯 합니다.

어쨌든 위에서의 목적은 사용자가 로그인되지 않았으니 다시 로그인을 하게끔 편의성을 제공하여 로그인페이지로 이동시켜주는게 주 목적인지라 redirect로 이동하던 render_template로 login.html 을 렌더링 하던 그 부분은 상관없으리라 생각됩니다.

관리적인 측면에선 redirect 가 좀 더 편하긴 합니다. (예: login.html 파일명을 login_new.html 로 변경하였을때... )

0

journeytosth님의 프로필 이미지
journeytosth
질문자

2020. 04. 30. 23:04

정성스러운 답변 감사드립니다! :)