Flask 웹 서버 구현
Flask 실 ip 설정
ap.run(debug=True, port=5000, host='0.0.0.0')
host='자신의 컴퓨터의 실제 ip'
* 자신의 컴퓨터의 실제 확인하기 : 네트워크 - 이더넷 속성 - IPv4
* 터미널에서 확인하는 방법 : ipconfig
static 폴더 활용
templates와 함께 사용할 때는 static 폴더를 생성하여 이미지나 css, js 등의 웹 자원 활용
url_for() 함수로 정적 자원을 처리
형식)
url_for('static', filemname='가져올자원파일명' )
먼저 작업 폴더에 static 폴더를 만들고, 하위 폴더로 css, js, images 등의 이름으르 자원 폴더를 생성.
참고) Flask의 템플릿 엔진 - Jinja2
Thymeleaf와 같은 동적 웹 처리용 엔진
변수, 제어문 등을 활용하여 동적 데이터 처리.
{{ 변수 }}, {% 제어문 %} 등
@ 어노테이션(자바), 데코레이터(파이썬)
html 문서
tempates 폴더 - 폴더 안에서 html을 작성하면 자동완성이 되지 않으므로 바깥쪽에서 작성한 후 안 쪽에 넣어주기~
저장 안 하면 화면 안 뜸!
딕셔너리 형식으로 전송됨 name(키) : data(값)로 설정됨
<간단한 계산기>
form형식 get 방식 -> request.args.get으로 꺼내옴 html의 name에 지정한 이름을 가져옴
http://127.0.0.1:5000/calproc?num1=5&num2=10
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>계산기</title>
</head>
<body>
<h1>간단한 계산기</h1>
<form action="calproc">
<p><input type="number" name="num1"></p>
<p><input type="number" name="num2"></p>
<input type="submit" value="계산">
</form>
</body>
</html>
<로그인>
form형식 post방식 -> request.form.get으로 꺼내옴 html의 name에 지정한 이름을 가져옴
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>login</title>
</head>
<body>
<h1>로그인</h1>
<form action="loginproc" method="post">
<p><input type="text" name="id" required placeholder="아이디"></p>
<p><input type="password" name="pwd" required placeholder="비밀번호"></p>
<p><input type="submit" value="로그인"></p>
</form>
</body>
</html>
파이썬
from flask import Flask, render_template, request
# flask 객체 생성
ap = Flask(__name__)
# url 매핑 함수 작성
@ap.route('/')
def home():
return render_template('home.html')
@ap.route('/calcul')
def calcul():
return render_template('calcul.html')
@ap.route('/calproc', methods=['GET'])
def calproc():
n1 = request.args.get('num1', "") # defult 값으로 공백 또는 False
n2 = request.args.get('num2', "")
print(n1, n2)
n1 = int(n1)
n2 = int(n2)
return f'{n1} + {n2} = {n1 + n2}'
@ap.route('/login')
def login():
return render_template('login.html')
@ap.route('/loginproc', methods=['POST'])
def loginproc():
id = request.form.get('id', '')
pwd = request.form.get('pwd', '')
print(id, pwd)
return render_template('home.html')
# 실행
if __name__ == '__main__':
ap.run(debug=True)
get, post 하나로 합치기
@ap.route('/login', methods=['POST', 'GET'])
def login():
if request.method == 'GET':
return render_template('login.html')
else:
id = request.form.get('id', '')
pwd = request.form.get('pwd', '')
print(id, pwd)
return render_template('home.html')
html 파일 -> action "loginproc"에서 "login"으로 수정
연습
Flask로 자기소개 사이트 개설하기
'공부기록 > Python' 카테고리의 다른 글
6월 15일 python - GUI(tkinker) (0) | 2023.06.15 |
---|---|
6월 14일 (2) python - Web (0) | 2023.06.14 |
6월 14일 (1) python - 예외처리, 패키지 (0) | 2023.06.14 |
6월 13일 python - 클래스 (0) | 2023.06.13 |
6월 12일 (2) python - 모듈 (0) | 2023.06.12 |