1.개발 결과
Flask를 이용하여 웹 페이지를 구성해보았다.
GET / POST Method로 파라미터를 전달 받아, 사용자에게 다시 표시해주는 임시적인 웹 서버를 만들었다. 앞으로 학습 시 필요한 기능은 추가적으로 개발하기로 하였다.


2.개발 목적
실습할 수 있는 기본 환경 구성을 위한 1단계로, Flask 웹 페이지를 구성해본다.
3.개발 사유
웹, 모바일 앱, 네트워크 및 보안에 대한 학습 시, 필요한 대상을 구축하여 실습해보는 형태로 수행하기 위한 목적으로 개발하였다.
4.설계 단계
1) HTTP 서버 만들기
2) 서버 요청에 대한 응답 값으로 Hello, World가 아닌 html 페이지로 내려주기
3) 파라미터를 받아서 표시해주는 로직을 추가 (GET / POST)
5.구현 단계
1) 구현 순서
(1) HTTP 서버 만들기
from flask import Flask, render_template, request
import json, ssl, os
app = Flask(__name__)
host_addr = "0.0.0.0"
host_port = "8777"
@app.route("/")
def index():
return "Hello, World"
if __name__ == "__main__":
app.debug = True
# app.run(host=host_addr, port=host_port, ssl_context="adhoc")
app.run(host=host_addr, port=host_port)

(2) 서버 요청에 대한 응답 값으로 Hello, World가 아닌 html 페이지로 내려주기
- app.py
@app.route("/")
def index():
return render_template("index.html")
- index.html
<!DOCTYPE html>
<html>
<head>
<title> Index </title>
</head>
<body>
hi! index.html
</body>
</html>

(3) 파라미터를 받아서 표시해주는 로직을 추가 (GET / POST)
GET과 POST를 URL로 구분하였으나, methods=["GET", "POST"]로 작성하여 if문으로 구분하여도 된다.
- app.py
@app.route("/GET_Param", methods=["GET"])
def get_data():
get_data = request.args.get("param")
return render_template("get.html", text=get_data)
@app.route("/POST_Param", methods=["POST"])
def post_data():
post_data = request.form.get("param")
return render_template("post.html", text=post_data)
- index.html
<!DOCTYPE html>
<html>
<head>
<title> Index </title>
</head>
<body>
hi! index.html
Get TEST.
<form action="/GET_Param" method="GET">
<input type="text" name="param">
<input type="submit" value="send">
<form>
<br>
POST TEST.
<form action="/POST_Param" method="POST">
<input type="text" name="param">
<input type="submit" value="send">
<form>
</body>
</html>

2)소스코드 및 기능 설명
상세 설명이 필요 없는, 기본적인 소스코드로 주석 내용을 참조하며 필요한 기능을 구현하면 된다.
@app.route("/", methods=[]) // URL 경로 설정 및 접근 가능한 Method를 설정할 수 있다.
def function(): // 해당 URL 경로에서 수행될 함수명
get_data = request.args.get("g_param") // GET Method의 파라미터를 받아올 시
post_data = request.form.get("p_param") // POST Method의 파라미터를 받아올 시
// 해당 URL에서 서버사이드(백엔드)로 동작할 기능을 추가할 수 있다.
// 예시 : 로그인 기능 구현
return render_template("get.html", text=get_data) // 응답 페이지 및 페이지 내 전달될 변수
3)구현단계에서 발생된 문제점 및 해결 방법
(1) 계층 구조 만들기 (template)
| 예상 상황 | return 으로 render_template 로 선언한 index.html 페이지가 응답하겠지? |
| 문제점 | 작성된 index.html 페이지를 응답해주지 않음 |
| 해결 방법 | Linux 환경에서 첫 Flask 였는데, 작성된 메인 웹 서버 python 파일 (app.py)의 하위 경로에 위치 지정 필요 ① app.py 경로에 template 폴더 생성 ② template 폴더에 작성한 index.html 파일 위치 ③ return render_template("inddex.html") 선언 시 정상 동작 확인 ④ 별도로 template의 위치를 지정할 수 있음 (추가 확인 필요) |

'개발' 카테고리의 다른 글
| [WEB] Node.js 웹 사이트 구축 1 (환경 구성) (0) | 2024.01.05 |
|---|---|
| [Python] m3u8 스트리밍 영상 다운로드 (Feat.불법 다운로드 대응) (0) | 2023.06.08 |
| [Python][자동화] ICMP Type 및 Code 별 전송 (0) | 2023.02.10 |
| ChatGPT로 메일 서버 구축해보기 (1) : 메일서버 어떻게 구축해? (0) | 2023.02.05 |
| [Python][자동화] NMAP 스캔 결과를 이미지 저장 (0) | 2022.11.15 |