Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 메모리구조
- stream
- C programming
- 윤성우 열혈자료구조
- C 언어 코딩 도장
- 알기쉬운 알고리즘
- 이것이 자바다
- datastructure
- Stack
- Selection Sorting
- s
- buffer
- Algorithm
- R
- coding test
- 윤성우의 열혈 자료구조
- JSON
- list 컬렉션
- 이스케이프 문자
- 혼자 공부하는 C언어
- Serialization
- insertion sort
- Graph
Archives
- Today
- Total
Engineering Note
Web-Backend 2 본문

Blueprint
- API들을 분류/관리 하는 기능
- API를 기능 별로 따로 파이썬 파일을 만들어서 Blueprint 객체를 만들어주고 urp 등록을 객체.route로 해준다. 그리고 app.py에 import를 해주고 register.blueprint로 등록을 해주면 파일로 분류된 api를 사용할 수 있다.
from flask import Flask,render_template,jsonify,request, redirect
app = Flask(__name__)
# 기능을 모듈화하고 Blueprint를 등록하세요.
user_list=[
{"name":"elice","password":'1234'},
{"name":"oliver","password":'1111'},
{"name":"tony","password":'1257'},
{"name":"timber","password":'1357'},
]
board_list= []
@app.route("/")
def home_page():
return render_template("index.html")
@app.route("/register" ,methods=["GET"])
def regist_page():
return render_template("register.html")
@app.route("/login", methods=["GET"])
def login_page():
return render_template("login.html")
@app.route("/register", methods=["POST"])
def register_service():
id = request.form['username']
pw = request.form['password']
user = {'name':id,'password':pw}
user_list.append(user)
return redirect("/")
@app.route("/board" ,methods=["POST"])
def resgist_service():
name = request.form['usernmae']
content = request.form['content']
data = {'name':name,'content':content}
board_list.append(data)
return redirect("/board")
@app.route("/board/<id>")
def edit_board(id):
content=request.form['content']
board_list[id+1]['content'] = content
return redirect("/board")
@app.route("/login", methods=["POST"])
def login_service():
id = request.form['username']
pw = request.form['password']
for user in user_list:
if user['name'] == id and user['password'] == pw:
return jsonify("유저 로그인!")
return jsonify("로그인 실패!")
if __name__ == '__main__':
app.run(debug=True)
- 위처럼 길었던 api 코드를 분류해서 아래처럼 사용



Jinja2
- 서버에서 받아온 데이터를 효과적으로 보여주고 비교적 간략한 표현으로 데이터를 가공할 수 있습니다.
- html 파일에서 파이썬 문법을 사용하도록 해줌
- html 에서 데이터를 출력하기 위해서 서버로 부터 전달 받은 변수명을 중괄호 두개 사이에 넣어 주면된다. {{ 변수명 }}

클라이언트 코드
<h2>과일 작성하기</h2>
<form action="/" method="POST">
<p>
<input name='fruit'>
</p>
<button type="submit">제출</button>
</form>
<hr>
POST 방식으로 클라이언트에서 서버로 전송을 해주면 fuit이라는 곳에 담겨서 온 데이터를 request.form으로 받아서 input_fruit 변수에 저장해준다. 그리고 이 데이터를 fruit_list라는 리스트 변수에 다시 저장해주고 redirect로 다시 원하는 url로 return
서버코드
def home():
if request.method == 'POST':
input_fruit = request.form['fruit']
# 입력받은 과일을 fruit_list에 저장하세요.
fruit_list.append(input_fruit)
return redirect('/')
# 과일 리스트를 매개변수로 넘겨주세요.
return render_template("index.html", data = fruit_list)
이렇게 입력 받은 데이터를 render_template로 클라이언트로 전송해주면 Jinjatemplate으로 데이터를 한번에 출력하거나 반복문을 이용해서 출력해주면된다.
<h5>한 번에 출력하기</h5>
<p>
<!-- 과일 리스트를 한 번에 출력하세요. -->
{{data}}
</p>
<hr>
<h5>한 개씩 출력하기</h5>
<!-- 과일 리스트를 한 개씩 출력하세요. -->
{% for fruit in data %}
<p> {{fruit}} </p>
{% endfor %}
서버 전체코드
from flask import Flask, render_template, request, redirect
app = Flask(__name__)
fruit_list = ['수박']
@app.route("/", methods=["GET", "POST"])
def home():
if request.method == 'POST':
input_fruit = request.form['fruit']
# 입력받은 과일을 fruit_list에 저장하세요.
fruit_list.append(input_fruit)
return redirect('/')
# 과일 리스트를 매개변수로 넘겨주세요.
return render_template("index.html", data = fruit_list)
if __name__ == "__main__":
app.run(debug=True)
클라이언트 전체 코드
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>JINJA Practice</title>
</head>
<body>
<h2>과일 작성하기</h2>
<form action="/" method="POST">
<p>
<input name='fruit'>
</p>
<button type="submit">제출</button>
</form>
<hr>
<h5>한 번에 출력하기</h5>
<p>
<!-- 과일 리스트를 한 번에 출력하세요. -->
{{data}}
</p>
<hr>
<h5>한 개씩 출력하기</h5>
<!-- 과일 리스트를 한 개씩 출력하세요. -->
{% for fruit in data %}
<p> {{fruit}} </p>
{% endfor %}
</body>
</html>
게시판을 위한 CRUD 설계 및 제작
API 동작 원리

CRUD와 HTTP Method와 DB 명령어와의 관계

Authenticationn
- 인증 사용자가 맞는지 확인하는 과정
쿠키
- 클라이언트에 저장되어 있는 키/값이 들어 있는 데이터, 유효기간이 있음
- 사용자가 따로 요청하지 않아도, Request 시에 자동으로 서버에 전송합니다.
세션
- 쿠키를 기반으로 하지만 서버 측에서 관리하는 데이터
- 클라이언트에 고유 ID를 부여하고 클라이언트에 알맞은 서비스를 제공합니다.
- 서버에서 관리하기 때문에 보안이 쿠키보다 우수합니다.
로깅
- 프로그램이 작동할 때 발생하는 이벤트를 추적하는 행위

'Server > Flask' 카테고리의 다른 글
| SQL Alchemy와 ORM (0) | 2021.07.18 |
|---|---|
| JWT (0) | 2021.07.18 |
| RDB와 Flask (0) | 2021.07.18 |
| Flask 게시글 삭제 (0) | 2021.07.18 |
| Web-Backend (0) | 2021.07.15 |
Comments