📎 완성작 버킷리스트
index.html
, app.py
준비하기from flask import Flask, render_template, request, jsonify
app = Flask(__name__)
@app.route('/')
def home():
return render_template('index.html')
@app.route("/bucket", methods=["POST"])
def bucket_post():
sample_receive = request.form['sample_give']
print(sample_receive)
return jsonify({'msg': 'POST(기록) 연결 완료!'})
@app.route("/bucket/done", methods=["POST"])
def bucket_done():
sample_receive = request.form['sample_give']
print(sample_receive)
return jsonify({'msg': 'POST(완료) 연결 완료!'})
@app.route("/bucket", methods=["GET"])
def bucket_get():
return jsonify({'msg': 'GET 연결 완료!'})
if __name__ == '__main__':
app.run('0.0.0.0', port=5000, debug=True)
👉 1. 요청 정보 : URL=
/bucket
, 요청 방식 =POST
2. 클라(ajax) → 서버(flask) :bucket
3. 서버(flask) → 클라(ajax) : 메시지를 보냄 (기록 완료!)
단! 서버에서 한 가지 일을 더 해야합니다.
→ 번호를 만들어 함께 넣어주는 것. 그래야 업데이트가 가능하겠죠!
1) 클라이언트와 서버 연결 확인하기
app.py
]@app.route("/bucket", methods=["POST"])
def bucket_post():
sample_receive = request.form['sample_give']
print(sample_receive)
return jsonify({'msg': 'POST(기록) 연결 완료!'})
index.html
]function save_bucket(){
$.ajax({
type: "POST",
url: "/bucket",
data: {sample_give:'데이터전송'},
success: function (response) {
alert(response["msg"])
}
});
}
<button onclick="save_bucket()" type="button" class="btn btn-outline-primary">기록하기</button>
2) 서버부터 만들기
bucket
정보를 받아서, 저장@app.route("/bucket", methods=["POST"])
def bucket_post():
# 1. 클라이언트에서 받아온 데이터를 일단 저장해야한다.
bucket_receive = request.form['bucket_give']
# 3-1. 아래 3번에서 num + 1을 해주기 위해 데이터베이스 값을 가져온다.
bucket_list = list(db.bucket.find({},{'_id':False}))
# 3-2. 파이썬에서 개수를 세는 len()을 사용한다.
count = len(bucket_list) + 1
# 2. 데이터는 세가지를 저장한다.
# num(완료시 구분할 수 있는 번호), done(완료여부), 입력메시지(bucket)
doc = {
# 'num': 0, 처음엔 모르니까 일단 0으로 지정
# 3. bucket이라는 db에 만약 2개의 데이터가 쌓여있을 경우, 새로 저장되는 번호는 +1을 한 값이어야 한다.
'num': count, ## 3-2. 에서 카운트값 설정
'bucket': bucket_receive,
'done': 0 ## 아직 안했으면 0, 했으면 1로 바꿔주기
}
db.bucket.insert_one(doc)
return jsonify({'msg': '등록 완료!'})
count = list(db.bucket.find({},{'_id':False}))
num = len(count) + 1
vs
count = db.bucket.find({},{'_id':False}).count()
num = count + 1
3) 클라이언트 만들기
bucket
정보만 보내주면 된다.function save_bucket(){
let bucket = $('#bucket').val()
$.ajax({
type: "POST",
url: "/bucket",
data: {bucket_give:bucket},
success: function (response) {
alert(response["msg"])
window.location.reload()
}
});
}
4) 완성 확인
👉 1. 요청 정보 : URL=
/bucket
, 요청 방식 =GET
2. 클라(ajax) → 서버(flask) : (없음)
3. 서버(flask) → 클라(ajax) : 전체 버킷리스트를 보여주기
1) 클라이언트와 서버 연결 확인하기
app.py
]@app.route("/bucket/done", methods=["POST"])
def bucket_done():
sample_receive = request.form['sample_give']
print(sample_receive)
return jsonify({'msg': 'POST(완료) 연결 완료!'})
index.html
]$(document).ready(function () {
show_bucket();
});
function show_bucket(){
$.ajax({
type: "GET",
url: "/bucket",
data: {},
success: function (response) {
alert(response["msg"])
}
});
}
2) 서버부터 만들기
buckets
에 주문정보를 담아서 내려주기만 하면 된다.app.py
]@app.route("/bucket", methods=["GET"])
def bucket_get():
# 1. 데이터베이스에 저장된 데이터 다 가져오기
bucket_list = list(db.bucket.find({}, {'_id': False}))
# 2. 가져온 데이터 리턴해주기 (클라이언트로)
return jsonify({'buckets': bucket_list})
3) 클라이언트 만들기
index.html
]function show_bucket(){
$.ajax({
type: "GET",
url: "/bucket",
data: {},
success: function (response) {
// 1. 서버에서 리턴한 데이터 buckets 콘솔로 출력해보기
// console.log(response['buckets'])
// 2. 받아온 데이터 변수에 할당해서 화면에 뿌려주기
let rows = response['buckets']
for (let i = 0; i < rows.length; i++){
let bucket = rows[i]['bucket']
let num = rows[i]['num']
let done = rows[i]['done']
// 3. html에 추가해줄 때, 완료/미완료(버튼O) 부분이 다르기 때문에 주의할 것!
let temp_html =``
if (done == 0) { // 아직 미완료면,
// done_bucket() 함수에 매개변수로 num을 전달한다.
temp_html = `<li>
<h2>✅ ${bucket}</h2>
<buttontoken interpolation">${num})" type="button" class="btn btn-outline-primary">완료!</button>
</li>`
} else {
temp_html = `<li>
<h2 class="done">✅ ${bucket}</h2>
</li>`
}
$('#bucket-list').append(temp_html)
}
}
});
}
4) 완성 확인하기
👉 1. 요청 정보 : URL=
/bucket/done
, 요청 방식 =POST
2. 클라(ajax) → 서버(flask) :num
(버킷 넘버)
3. 서버(flask) → 클라(ajax) : 메시지를 보냄 (버킷 완료!)
1) 클라이언트와 서버 연결 확인하기
app.py
]@app.route("/bucket/done", methods=["POST"])
def bucket_done():
sample_receive = request.form['sample_give']
print(sample_receive)
return jsonify({'msg': 'POST(완료) 연결 완료!'})
index.html
]function done_bucket(num){
$.ajax({
type: "POST",
url: "/bucket/done",
data: {sameple_give:'데이터전송'},
success: function (response) {
alert(response["msg"])
}
});
}
<button onclick="done_bucket(5)" type="button" class="btn btn-outline-primary">완료!</button>
2) 서버부터 만들기
버킷 번호
를 받아서, 업데이트하기.num_receive
는 문자열로 들어오니까, 숫자로 바꿔주기!!app.py
]@app.route("/bucket/done", methods=["POST"])
def bucket_done():
# 1. num을 받아와서 해당 리스트를 완료해주어야한다.
num_receive = request.form['num_give']
# 2. num_receive로 받아온 데이터를 데이터베이스에 업데이트 해줘야한다.
# (데이터베이스 바꾸기 코드)
# ** 번호를 바꾸어야할 때! 클라이언트에서 서버로 받아온 값은 (request.form['num_give'])
# 다 문자로 받아지게 된다.
# 따라서 아래에서 데이터베이스 업데이트를 할 경우, 숫자로 변환해주는 함수 int()를 사용해야 한다.
# db.bucket.update_one({'num': num_receive}, {'$set': {'done': 1}})
db.bucket.update_one({'num': int(num_receive)}, {'$set': {'done': 1}})
return jsonify({'msg': '버킷 완료!'})
3) 클라이언트 만들기
index.html
]function done_bucket(num){
$.ajax({
type: "POST",
url: "/bucket/done",
data: {num_give: num},
success: function (response) {
alert(response["msg"])
window.location.reload()
}
});
}
4) 완성 확인하기
ssh -i 받은키페어를끌어다놓기 ubuntu@**AWS에적힌내아이피**
mkdir 폴더이름
ls
cd 폴더명
cd ..
한줄씩 붙여넣고 엔터 누르기
# python3 -> python
## python3라고 안쳐도 python만 쳐도 명령가능
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10
# pip3 -> pip
## pip라는 패키지 마법사 같은 기능 설치
sudo apt-get update
sudo apt-get install -y python3-pip
sudo update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 1
# port forwarding
## 로컬 호스트 5000을 떼는 명령어
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 5000
ps -ef | grep 'python [app.py](http://app.py/)' | awk '{print $2}' | xargs kill
👉 작업파일 배포시(필수 폴더/파일) > 파일질라 업로드 > git bash에서 nohup으로 켜기
👉 수정한 파일 재업로드시 > gitbash에서 서버 강제 종료 > 파일질라에서 서버의 기존 파일삭제 > 수정 파일 업로드 > 다시 nohup으로 켜기
👉 80포트: HTTP 접속을 위한 기본포트
5000포트: flask 기본포트