본문 바로가기

Project/Python

Blog project - GET/POST

 Blog project

GET/POST

 안녕하세요 저는 지성이라고 합니다.  이 프로젝트는 ‘블로그’를 만들어 가는 과정을 기록한 것입니다. 

 ‘블로그’라는 서비스의 특성상 텍스트 형태의 내용을 사용자에게 제공하는데 중점을 두고 있습니다.  그래서 화면의 구성도 포스트를 가장 크게 배치하게 됩니다. 하지만 사용자와의 소통을 위한 부분도 필요합니다. 가장 많이 사용되는 방식은 포스트에 댓글 기능을 추가하거나 연락할 수 있는 페이지를 따로 만들어 두는 것입니다. 대부분 두 가지 형식을 모두 구현하고 있습니다. 

 이번 글에서는 contact 라우트를 구성하면서 “GET” 과 “POST”에 대해서 간략하게 알아 보겠습니다. 

첫 코드에서 변경된 부분은 아래와 같습니다. 

 

@app.route('/contact', methods=["GET", "POST"])
def contact():
if request.method == "POST":
username = request.form ["name"]
email = request.form ["email"]
phone = request.form ["phone"]
message = request.form ["message"]
return render_template("contact.html", msg_sent=True)
else:
return render_template("contact.html", msg_sent=False)

“GET”과 “POST” 는 HTTP 프로토콜의 한 기능입니다.  간략하게 비유하자면 “GET”은 정보를 서버로부터 가져올 때 사용합니다. 그리고 “POST”는 정보를 서버로 보낼 때 사용합니다. 그 외에도 “PUT”은 정보를 수정할 때 “DELETE”는 정보를 삭제할 때 사용합니다.


크게는 이 네 가지가 중요하지만 이 외에도 더 많은 기능들이 있습니다. 

developer.mozilla.org/ko/docs/Web/HTTP/Methods)

 이를 구현하기 위해서 수많은 수학적 지식과 네트워크 지식이 필요합니다. 그리고 적용하기 위해서도 많은 지식이 필요합니다. 그런 자세한 내용들은 이후에 그 기능들을 직접 사용할 때 정리하도록 하겠습니다. 

 

 이 프로젝트에서는 contact 라우트에서 “GET”과 “POST”를 사용했습니다. 요청에 의한 기능이 “POST”인 경우  “contact.html”에서 각각의 정보를 변수로 저장하게 되어 있습니다. 그리고 결과로 “contact.html”을 다시 전송하면서 새로운 페이지로 대체하게 됩니다. “GET”인 경우 페이지를 읽어 오기만 하게 되어있습니다.

 

그리고 사용자가 메시지를 남겼을때 그 내용을 메일로 받을 수 있는 함수도 추가하였습니다. 

 

def send_email(name, email, phone, message):
email_message = f"Subject:New Message\n\nName: {name}\nEmail: {email}\nPhone: {phone}\nMessage:{message}"
with smtplib.SMTP("smtp.gmail.com") as connection:
connection.starttls()
connection.login(OWN_EMAIL, OWN_PASSWORD)
connection.sendmail(OWN_EMAIL, OWN_EMAIL, email_message)

 

메세지를 메일로 받기 위해 “smtplib”을 사용했습니다. 

docs.python.org/3/library/smtplib.html)

 

 

오늘은 간략하게 “consact 라우트”를 구현해 보았습니다.  다음에도 더 업그레이드된 글로 찾아뵙겠습니다. 

 

2021/02/01 - [Toy Project/Python] - Blog Project - Start

 

Blog Project - Start

Blog Project Start  안녕하세요 ? 저는 지성이라고 합니다. 한국에 살고 있는 평범한 직장인중 한명입니다. 저는 취미로 컴퓨터를 공부하고 있습니다.  “컴퓨터” 에도 다양한 분야가 있지만 저는

jisungsdevstroy.tistory.com

2021/02/02 - [Toy Project/Python] - Blog project - Back_end

 

Blog project - Back_end

Blog project Back-end  “Web Application”을 만드는 일은 다양한 기술의 조합으로 이루어집니다.  처음 이 일을 시작했던 때를 떠올려 보면 이 많은 것을 언제다 공부하나 하는 막막..

jisungsdevstroy.tistory.com

2021/02/03 - [Toy Project/Python] - Blog project - Front-end

 

Blog project - Front-end

Blog Project Front-end 지난 번에는 백엔드 즉 눈에는 보이지 않는 서버 쪽의 코드를 살펴 보았습니다. 최대한 간단하게 구성하기 위해 “데이터베이스”나 “배포”를 위한 내용은 포

jisungsdevstroy.tistory.com

 

'Project > Python' 카테고리의 다른 글

Blog project -SQLAlchemy  (0) 2021.02.23
Blog project - Database  (0) 2021.02.16
Blog project - Bootstrap  (0) 2021.02.04
Blog project - Front-end  (0) 2021.02.03
Blog project - Back_end  (0) 2021.02.02