[์คํ๋ฅดํ์ฝ๋ฉํด๋ฝ] ์น๊ฐ๋ฐ ์ข ํฉ๋ฐ - 4์ฃผ์ฐจ ๊ฐ๋ฐ์ผ์ง / ์์
- -
๋๋์ด 1์ฃผ์ฐจ ๊ณต๋ค์ธ ์์ ๋ฅผ ์์ฑํ ๋๊ฐ ์๋ค.
1์ฃผ์ฐจ์ ์์ฑํ ์ผํ๋ชฐ์ ์์ฑํด์ฃผ์ธ์!
์ผํ๋ชฐ์ ๋ ๊ฐ์ง ๊ธฐ๋ฅ์ ์ํํด์ผ ํฉ๋๋ค.
1) ์ฃผ๋ฌธํ๊ธฐ(POST): ์ ๋ณด ์ ๋ ฅ ํ '์ฃผ๋ฌธํ๊ธฐ' ๋ฒํผํด๋ฆญ ์ ์ฃผ๋ฌธ๋ชฉ๋ก์ ์ถ๊ฐ
2) ์ฃผ๋ฌธ๋ด์ญ๋ณด๊ธฐ(GET): ํ์ด์ง ๋ก๋ฉ ํ ํ๋จ ์ฃผ๋ฌธ ๋ชฉ๋ก์ด ์๋์ผ๋ก ๋ณด์ด๊ธฐ
์ฌ์ค 1์ฃผ์ฐจ ๊ธ์ ๋ณด๋ฉด ์ ์ ์์ง๋ง
๋ฉํ ํฐ์ง ๊ธ ๋ด์ฉ๊ณผ ๋ญ ๋ง๋ค์๋์ง ๋ชจ๋ฅผ ๊ณต๋ฐฑ์ด ๊ฐ๋ํ๋ค.
์ด์ ๋ ์๋ค์ํผ 1์ฃผ์ ๋ญ ๋ด์ ์ ์์์๊น..
๊ฐ ๊ณณ์ ์์ ๋ง์ฐ์ค์ ์ธ์ ๋๋ฆฐ ๊ฑฐ๋ถ์ด ํ์๋ก ๊ฒจ์ฐ ๋ฐ๋ผ๊ฐ๊ฒ ์ ๋ถ์๋ค.
ํ์ง๋ง ๋ง์ ์๋์ ์ค์๊ฐ ๋ณต์ต์ ํตํด ์ด๋์ ๋ ๋ฐ๋ผ์์์ ์ค์ค๋ก ๋๋ผ๊ฒ ๋์๋ค.
์ ๋ณด๋ค ์ฑ์ฅํ ์์ ์ ๋ณด๋ฉฐ ๊ณ์ ๋์๊ฐ์.
app
from flask import Flask, render_template, jsonify, request
app = Flask(__name__)
from pymongo import MongoClient
client = MongoClient('localhost', 27017)
db = client.dbhomework
## HTML ํ๋ฉด ๋ณด์ฌ์ฃผ๊ธฐ
@app.route('/')
def homework():
return render_template('index.html')
# ์ฃผ๋ฌธํ๊ธฐ(POST) API
@app.route('/order', methods=['POST'])
def save_order():
name_receive = request.form['name_give']
count_receive = request.form['count_give']
add_receive = request.form['add_give']
number_receive = request.form['number_give']
doc = {
'name': name_receive,
'count': count_receive,
'add': add_receive,
'number': number_receive
}
db.myshop.insert_one(doc)
return jsonify({'msg': '์ฃผ๋ฌธ์ด ์๋ฃ๋์์ต๋๋ค!'})
# ์ฃผ๋ฌธ ๋ชฉ๋ก๋ณด๊ธฐ(Read) API
@app.route('/order', methods=['GET'])
def view_orders():
customers = list(db.myshop.find({}, {'_id': False}))
return jsonify({'all_customers':customers})
if __name__ == '__main__':
app.run('0.0.0.0', port=5000, debug=True)
html
<!doctype html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<!-- Bootstrap CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css"
integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
<!-- Optional JavaScript -->
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"
integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q"
crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"
integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl"
crossorigin="anonymous"></script>
<title>์์ด์บ๋ค | ๊ตฌ๋งค ํ์ด์ง</title>
<link href="https://fonts.googleapis.com/css2?family=Do+Hyeon&family=Nanum+Pen+Script&display=swap"
rel="stylesheet">
<style>
* {
font-family: 'Nanum Pen Script', cursive;
}
.tablestyle {
width: 480px;
margin: 20px auto 30px auto;
}
.img_box {
width: 480px;
margin: 20px auto 30px auto;
}
.mybtn {
width: 100px;
margin: auto;
display: block;
}
.dollar {
color: blue;
}
</style>
<script>
$(document).ready(function () {
q1(),
list()
});
function q1() {
$.ajax({
type: "GET",
url: "http://spartacodingclub.shop/sparta_api/rate",
data: {},
success: function (response) {
let doller = response[`rate`]
let temp_html = `<h3 class="dollar">๋ฌ๋ฌ : ์ / ํ์จ : ${doller}</h3>`
$('#now_doller').append(temp_html)
}
})
}
function order() {
let name = $('#post-name').val()
let count = $('#inputGroupSelect01').val()
let add = $('#post-add').val()
let number = $('#post-number').val()
$.ajax({
type: "POST",
url: "/order",
data: {name_give:name, count_give:count, add_give:add, number_give:number},
success: function (response) { // ์ฑ๊ณตํ๋ฉด
alert(response["msg"]);
window.location.reload()
}
})
}
function list() {
$.ajax({
type: "GET",
url: "/order",
data: {},
success: function (response) {
let customers = response['all_customers']
for (let i = 0; i < customers.length; i++) {
let name = customers[i]['name']
let count = customers[i]['count']
let add = customers[i]['add']
let number = customers[i]['number']
let temp_html = `<tr>
<th scope="row">${name}</th>
<td>${count}</td>
<td>${add}</td>
<td>${number}</td>
</tr>`
$('#inputGroupSelect-list').append(temp_html)
}
}
})
}
</script>
</head>
<body>
<div class="img_box">
<p>
<img src="https://t1.daumcdn.net/cfile/tistory/2564EF4E55D681B320"/>
</p>
<h1 style="font-size:50px">์์ด ์บ๋ค ํ๋งค!! <span style="font-size: 30px">๊ฐ๊ฒฉ:3,000์/๊ฐ</span></h1>
<h2 style="font-size: 22px"> ์ด ์์ด๋ ์ฌ์ค ํน๋ณํ ํ์ ๊ฐ์ง๊ณ ์์ด์. ์์ด๋ฅผ ์ผ๊ณ ์์์ ๋น๋ฉด ์ง์๋ ๋ญ๋ ์ง ์ด๋ค์ง๊ฒ ๋๋ต๋๋ค. ํ๋ ์ฌ๊ฐ์ธ์! ๋๋๋ฌด ํฅ์ด ์์ฃผ
์ข์์!!
</h2>
<h3 id="now_doller"></h3>
<div class="input-group input-group-sm mb-3">
<div class="input-group-prepend">
<span class="input-group-text" id="inputGroup-sizing-sm">์ฃผ๋ฌธ์ ์ด๋ฆ</span>
</div>
<input id="post-name" type="text" class="form-control" aria-label="Small" aria-describedby="inputGroup-sizing-sm">
</div>
<div class="input-group mb-3">
<div class="input-group-prepend">
<label class="input-group-text" for="inputGroupSelect01">์๋</label>
</div>
<select class="custom-select" id="inputGroupSelect01">
<option selected></option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
</div>
<div class="input-group input-group-sm mb-3">
<div class="input-group-prepend">
<span class="input-group-text" id="inputGroup-sizing-sm">์ฃผ์</span>
</div>
<input id="post-add" type="text" class="form-control" aria-label="Small" aria-describedby="inputGroup-sizing-sm">
</div>
<div class="input-group input-group-sm mb-3">
<div class="input-group-prepend">
<span class="input-group-text" id="inputGroup-sizing-sm">์ ํ๋ฒํธ</span>
</div>
<input id="post-number" type="text" class="form-control" aria-label="Small" aria-describedby="inputGroup-sizing-sm">
</div>
<div class="mybtn">
<button onclick="order()" type="button" class="btn btn-primary">์ฃผ๋ฌธํ๊ธฐ</button>
</div>
</div>
<table class="table tablestyle" id="inputGroupSelect-list">
<thead>
<tr>
<th scope="col">์ฃผ๋ฌธ์๋ช
</th>
<th scope="col">์๋</th>
<th scope="col">์ฃผ์</th>
<th scope="col">์ ํ๋ฒํธ</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</body>
</html>
์์ฑ!!
์์ ๋ฅผ ํ๋ฉด์ ๋๋์ ๋ค
1) ์ด๋ฆ์ ์ ์ง์ด์ฃผ์.
์๊ฐ๋ณด๋ค ์ด๋ฆ์ด ๋ค์ด๊ฐ๋ ์๋ฆฌ๊ฐ ๋ง๋ค. ๊ทผ๋ฐ ์ด๋ฆ ํ๋ ์ ๋๋ก ์ ์์ง์ด์ฃผ๊ฒ ๋๋ค๋ฉด, ๋ด๊ฐ ํท๊ฐ๋ฆฌ๊ธฐ ์์ํ๋ค. ์ฝ๋ฉ์ ํ๋ฉด์ ๋ค์ด๋ฐ ์ผ์ค๊ฐ ํ์์ฌํญ์ด๋ผ๋ ๊ฒ์ ์ ์ ์์๋ค.
2) ๊ฒํฅ๊ธฐ ์์ด์ด๋ ๊ด์ฐฎ์, ์ผ๋จ ๋ฐ๋ผํด๋ด.
ํด์ฆ๋ ์์ ๋ฅผ ํ๋ฉด์ ๋๋๊ฑฐ์ง๋ง, ๋๋ ๊ณ์ ๋น ๊ณต๋ฐฑ์์ ์์ํด์ผ ๋ฐฐ์ ๋๊ฑธ ์ ์จ๋จน์ ์ ์์ง ์์๊น ์๊ฐํ๋ค. ํฐ ์ค์ฐ์ด๊ณ ์๋ง์ด์๋ค. ๋น์ ๊ณต์ ์์ด๋ณด์๊ฒ ๊ทธ๋ฐ ๊ธฐ์ ๊ฐ์ ์ผ์ ์ผ์ด๋์ง ์์๊ณ , ์ด๊ธฐ์ ์ธ ์์ฌ์ด์๋ค. ๊ทธ๋ฐ ์๊ฐ์ ์ ๊ณ ์ผ๋จ ๋ฐฐ์ ๋๊ฑฐ ์์ฃผ๋ก ์์ ์ผ๋ก ๊ฐ์ด ์ฝ๋ฉ ํ๋ ๊ฒ์ ๋ณด๊ณ ๋ฐ๋ผ ์ฐ๊ณ ๋ฅผ ๋ฐ๋ณตํ๋ค. ๋น์ฐํ ๋ญ ๋ฃ์ด์ผํ๊ณ ๋ค์ด๊ฐ์ผํ๊ณ ์ง์ฐ๊ณ ๋ฐ๊ฟ์ผํ๋์ง ๋ชจ๋ฅด๋๊ฒ ํ๋ฐ์ด์ง๋ง, 4์ฃผ์ฐจ๋ฅผ ๋ง๋ฌด๋ฆฌํ๊ณ ์๋ ๋๋ ์๊ฐ๋ณด๋ค ๊ทธ ๊ณผ์ ๋ค์ ์ ์ํํ๊ณ ์์๋ค. ์๋ฒฝ์ ์๋์ง๋ง ์์ ๋ํ์์ ๋ฐ๊ฑธ์์ ๋ง์ถ๋ฉฐ ๊ฑธ์ด๊ฐ ์ ์์ ์ ๋์๋ค.
3) ์ฑ์ทจ๊ฐ ์ฐพ๊ธฐ.
์ฌ๋์๊ฒ ์๋๋ ฅ์ด ํ์ํ๋์ด ๊ณต๋ถํ๋ ์ฌ๋์๊ฒ ๋ณด์ฌ์ง๋ ์ฑ์ทจ๊ฐ์ด ํ์ํ๋ค. ๋ด๊ฐ ์ ๋ฐฐ์ฐ๊ณ ์๋๊ฒ ๋ง๋, ๋ด๊ฐ ๋ฐฐ์ด๊ฒ ์ ์จ๋จน์ด ์ง๋๊ฑด๊ฐ, ๋ด๊ฐ ๋ฐฐ์ฐ๊ณ ์ ์ฌ์ฉํ ์ ์์๊น ๋ฑ๋ฑ. ๊ทธ๋ฐ ๊ฒ๋ค์ด ์ ๋ง ์ง๊ด์ ์ผ๋ก ๋ณด์ด๊ณ ๋๋ ์ ์๋๊ฒ ์ฝ๋ฉ์ธ ๊ฒ ๊ฐ๋ค. ๋จ์ํ ๋์๊ฒ๋ ์ด๋ฐ ๊ณผ์ ์ ๊ณ์ ์ง์ํ๊ฒ ๋งค๋ฌ๋ฆฌ๊ฒ ๋ง๋ค์๊ณ , ๊ฒฐ๊ตญ ์งง์ ๊ธฐ๊ฐ๋์ 4์ฃผ์ฐจ๊น์ง ๋ฌ๋ ค์ฌ ์ ์์๋ค.
์ฌํ๋ณต์ง๋ฅผ ์ ๊ณตํ๊ณ ์ฌ๋์ ๋ฌ๋๋ ์ฌ๋์ด ์ด๋ฒ์ ์ปดํจํฐ๋ฅผ ๋ฌ๋๊ณ ์๋ค.
๋์ ๊ฐ์ ์ฌ๋์ ๋ง์ ๊ฒ์ด๊ณ ์๋ง ์ฆ์ ๊ณ ๋น๋ฅผ ๋ง์ฃผํ ๊ฒ์ด๋ค.
์ด๊ฒ์ด ๋ด๊ฐ ์ข์ํ๋ ์ผ์ด ๋์์ผ๋ฉด ์ข๊ฒ ๊ณ , ์ง๊ธ ํ๋ ์ผ์ด ๋ฌด์๋ฏธํ์ง ์์์ผ๋ฉด ํ๋ค.
์ ๋ฐ๋ผ์๊ณ , ๋ ๋ถ์ซ๊ณ ๊ฐ๊ณ ์ถ๋ค.
๋ค์ ๋ฒ์๋ ํจ๊ป ๊ฑธ์ด๊ฐ ์ ์๋ ์ฌ๋์ด ๋๊ณ ์ถ๋ค.
'๐ถ ๋ด์ผ๋ฐฐ์๋จ > ์น๊ฐ๋ฐ ์ข ํฉ ๊ฐ๋ฐ์ผ์ง' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋น์ ์ด ์ข์ํ ๋งํ ์ฝํ ์ธ
-
[์คํ๋ฅดํ์ฝ๋ฉํด๋ฝ] ์น๊ฐ๋ฐ ์ข ํฉ๋ฐ - 5์ฃผ์ฐจ ๊ฐ๋ฐ์ผ์ง / ์์ 2022.12.31
-
[์คํ๋ฅดํ์ฝ๋ฉํด๋ฝ] ์น๊ฐ๋ฐ ์ข ํฉ๋ฐ - 3์ฃผ์ฐจ ๊ฐ๋ฐ์ผ์ง / ์์ (์ค์ต/ํ์ด) 2022.12.31
-
3์ฃผ์ฐจ_Quiz_์น์คํฌ๋ํ ๊ฒฐ๊ณผ ์ด์ฉํ๊ธฐ ํ์ด ๋์๊น 2022.12.31
-
3์ฃผ์ฐจ_Quiz_์น์คํฌ๋ํ(ํฌ๋กค๋ง) ํ์ด ๋์๊น 2022.12.31
์์คํ ๊ณต๊ฐ ๊ฐ์ฌํฉ๋๋ค