<1 / 2 주차>
<3 주차>
<4주차>
(이미지 출처: 스파르타코딩클럽)
위와 같은 환경을 구축하기 위헤 로컬서버를 구현하고자 flask프레임워크를 쓰고자 한다.
from flask import Flask
app = Flask(__name__)
@app.route('/')
def home():
return 'This is Home!'
if __name__ == '__main__':
app.run('0.0.0.0',port=5000,debug=True)
이런 창 나오면 서버 구동 완료 된 것
위에서 port = 5000으로 선언했으므로
주소창에 localhost:5000 입력
화면에 This is Home! 출력되면 로컬서버 구축 완료다.
@app.route('/mypage')
def home():
return 'This is My Home!'
이렇게 코드 하나를 중간에 더 추가해서 url를 나눌수도 있다.
이렇게가 기본적인 flask 프레임워크 구조다.
HTML파일을 불러오려면 templates 디렉토리에 HTML파일을 넣어주고
from flask import Flask, render_template
app = Flask(__name__)
## URL 별로 함수명이 같거나,
## route('/') 등의 주소가 같으면 안됩니다.
@app.route('/')
def home():
return render_template('index.html')
if __name__ == '__main__':
app.run('0.0.0.0', port=5000, debug=True)
flask 내장함수인 render_template를 이용한다.
1) HTML 파일에서 특정 동작을 할때 데이터를 넣고싶다?
#app.py
@app.route("/homework", methods=["POST"])
def homework_post():
nickname_receive = request.form['nickname_give']
comment_receive = request.form['comment_give']
doc = {
'nickname': nickname_receive,
'comment': comment_receive
}
db.fans.insert_one(doc)
return jsonify({'msg':'팬명록 등록 완료!'})
//index.html
function save_comment() {
let nickname = $(`#name`).val()
let comment = $(`#comment`).val()
$.ajax({
type: 'POST',
url: '/homework',
data: {nickname_give: nickname, comment_give: comment},
success: function (response) {
alert(response['msg'])
window.location.reload()
}
})
}
2) DB 저장된 데이터를 화면에 출력해주고 싶다?
# app.py
@app.route("/homework", methods=["GET"])
def homework_get():
comment_list = list(db.fans.find({}, {'_id': False}))
return jsonify({'comments': comment_list})
function show_comment() {
$.ajax({
type: "GET",
url: "/homework",
data: {},
success: function (response) {
let rows = response['comments']
for(let i = 0; i < rows.length; i++){
let nickname = rows[i]['nickname']
let comment = rows[i]['comment']
let temp_html = ` <div class="card">
<div class="card-body">
<blockquote class="blockquote mb-0">
<p>${comment}</p>
<footer class="blockquote-footer">${nickname}</footer>
</blockquote>
</div>
</div>
`
$(`#comment-list`).append(temp_html)
}
}
});
}
이렇게 된다.
뭔가 알 것 같으면서도 모르겠고 모르는건 또 아닌거 같기도하고 애매하진 않은데 확실하지도 않은 그런..