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
2021/02/02 - [Toy Project/Python] - Blog project - Back_end
2021/02/03 - [Toy Project/Python] - Blog project - Front-end
'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 |