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

류재안님의 프로필 이미지
류재안

작성한 질문수

파이썬 플라스크(Flask) 기반 웹 개발 및 업무 자동화 서비스 활용

GET과 POST 요청 처리 방식 이해

[get과post요청 처리방식 이해]03_get_post from action 문의

작성

·

257

0

안녕하세요.

[get과post요청 처리방식 이해]03_get_post 강의중에,

app.py

@app.route("/user", methods=['GET', 'POST'])

이 부분에서 /user 의 경로는 사용이 안되는 것 같은데요.

index.html form 의 action ="" 이어서 이게 우선되어서 그런건가요??

12:01 분 부분의 강의설명 중에

action ="" 를 삭제하면 5000/ 에서 처리가 된다고 하셨는데

이미 그렇게 되고 있는 것 같습니다.

 

index.html 에서

action 부분을 /user 를 넣어주니

<form action="/user" method="post">

브라우저에서 5000/ user 에서 welcome.html 화면이 나오네요.

 

답변 2

0

류재안님의 프로필 이미지
류재안
질문자

안녕하세요.

본 강의로 flask 에 대해 처음 듣다가 어려움을 느껴서 다른 강의들을 듣고 다시 왔습니다.

이해가 부족하다보니 이전에 다소 헷갈리게 질문을 드렸던 것 같네요.

 

아무튼..

제가 질문하고자 한 건.

app.route를 ('/'), ('/user) 이렇게 두 개를 왜 사용하는 지에 대한 질문이었습니다.

 

@app.route('/', methods=['GET','POST'])
@app.route('/user',methods=['GET','POST'])
def post():
    if(request.method=='GET'):
        return render_template('index.html')
    
    elif(request.method=='POST'):
        value=request.form['input']
        return render_template('welcome.html', name=value)    

 

웹브라우져에서

경로를 127.0.0.1/5000/ 으로 실행하든

127.0.0.1/5000/user 로 실행하든

실행이 동일하게 되기는 하는데요.

어떤 것을 보여주기 위해서 이중데코레이터를 사용한 건지요? 현장에서 많이 쓰는 건지??

 

0

안녕하세요, 인프런 AI 인턴입니다.
류재안님, Flask에서 form 태그의 action 속성은 브라우저가 데이터를 보낼 서버의 경로를 지정합니다. action=""으로 설정된 경우 현재 페이지의 URL로 폼 데이터를 보낼 것입니다. 따라서, /user 경로로 POST 요청을 처리하고자 한다면 <form action="/user" method="post">와 같이 명시적으로 action 속성에 /user를 설정해야 합니다. 강의 중 언급하신 action =""를 삭제하면 ‘5000/’ 에서 처리된다고 한 부분은 현재 페이지의 URL이 ‘5000/‘이라는 의미이며, 이 때는 현재 페이지의 URL로 POST 요청이 이루어집니다.

요약하자면, form의 action 속성에 /user를 설정하면 이 경로로 POST 요청이 가고, 그렇지 않은 경우 현재 페이지 URL로 POST 요청이 이루어질 것입니다. /user 경로를 사용하는 것이 안 되는 것처럼 보이는 문제는, 서버 설정이나 다른 라우트 경로와의 충돌 가능성도 있으니 코드 전체와 함께 로그를 확인해보시는 것을 추천드립니다.

류재안님의 프로필 이미지
류재안
질문자

아 제 질문은,

app.py 의 @app.route("경로1", methods=['GET', 'POST']) 의 경로1과,

index.html form 의 action 의 <form action="경로2" method="post">경로2가 다른 경우에 이렇게 다르게 설정이 되도 되는 건지, 다른 경우, 어느 것이 우선되는 지에 대한 질문이었습니다.

류재안님의 프로필 이미지
류재안

작성한 질문수

질문하기