
1.app.py
from flask import Flask, render_template, request, jsonify
app = Flask(__name__)
from pymongo import MongoClient
client = MongoClient('mongodb+srv://test:sparta@sparta.7sdx160.mongodb.net/sparta?retryWrites=true&w=majority')
db = client.dbsparta
@app.route('/')
def home():
return render_template('index.html')
@app.route("/mars", methods=["POST"])
def web_mars_post():
name_receive = request.form['name_give']
title_receive = request.form['title_give']
date_receive = request.form['date_give']
content_receive = request.form['content_give']
doc = {
'name' : name_receive,
'title' : title_receive,
'date' : date_receive,
'content': content_receive
}
db.mars.insert_one(doc)
return jsonify({'msg': '주문 완료!'})
@app.route("/mars", methods=["GET"])
def web_mars_get():
order_list = list(db.mars.find({}, {'_id': False}))
return jsonify({'orders':order_list})
if __name__ == '__main__':
app.run('0.0.0.0', port=5000, debug=True)
2.index.html
<!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">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
crossorigin="anonymous"></script>
<link href="https://fonts.googleapis.com/css2?family=Gowun+Batang:wght@400;700&display=swap" rel="stylesheet">
<title>나의 개발일지</title>
<style>
* {
font-family: 'Gowun Batang', serif;
}
body {
background-image: linear-gradient(0deg, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.5)), url('https://blog.kakaocdn.net/dn/CUKz9/btqGK3bQE0P/4sDOkRXJWuXFQwjz2kM4C1/unicorn3.jpg?attach=1&knm=img.jpg');
background-position: center;
background-size: cover;
}
h1 {
font-weight: bold;
}
.order {
width: 500px;
margin: 60px auto 0px auto;
padding-bottom: 60px;
font-weight: bold;
}
.mybtn {
width: 100%;
font-weight: bold;
}
.order > table {
margin : 40px 0;
font-size: 18px;
}
.wrap{
color: black;
}
.mask{
color: white;
}
option {
color: black;
}
</style>
<script>
$(document).ready(function() {
show_order();
});
function show_order() {
$('#order-box').empty()
$.ajax({
type: 'GET',
url: '/mars',
data: {},
success: function (response) {
let rows = response['orders']
for (let i = 0; i < rows.length; i++) {
let name = rows[i]['name']
let title = rows[i]['title']
let date = rows[i]['date']
let content = rows[i]['content']
let temp_html = `<div class="col">
<div class="card h-100">
<div class="card-body">
<div class="card">
<h5 class="card-header">${'#name'}</h5>
<div class="card-body">
<h5 class="card-title"></h5>
<p class="card-text">오늘은 웹개발 플러스에서 jinja2로 뜻 가져오기를 했다. </p>
<a href="#" class="btn btn-primary">상세 이동</a>
</div>
</div>
</div>
</div>
</div>`
$('#order-box').append(temp_html)
}
}
});
}
function save_order() {
let name = $('#name').val()
let title = $('#title').val()
let date = $('#date').val()
let content = $('#content').val()
$.ajax({
type: 'POST',
url: '/mars',
data: { name_give:name, title_give:title, date_give:date,content_give:content},
success: function (response) {
alert(response['msg'])
window.location.reload()
}
});
}
</script>
</head>
<body>
<div class="mask">
<div class="order">
<h1>나의 개발 일지를 공유합니다.</h1>
<h3></h3>
<p>
나의 개발일지를 손쉽게 쓰기 >< <br/>
미리미리 쓰면 귀찮지 않고 재밌다!
</p>
<div class="order-info">
<div class="input-group mb-3">
<span class="input-group-text">이름</span>
<input id="name" type="text" class="form-control">
</div>
<div class="input-group mb-3">
<span class="input-group-text">제목</span>
<input id="title" type="text" class="form-control">
</div>
<div class="input-group mb-3">
<span class="input-group-text">날짜</span>
<input id="date" type="text" class="form-control">
</div>
<div class="input-group mb-3">
<span class="input-group-text">개발 내용</span>
<input id="content" type="text" class="form-control">
</div>
<button onclick="save_order()" type="button" class="btn btn-info mybtn">개발 일지 작성하기</button>
</div>
</div>
<!-- <table class="table">-->
<!-- <thead>-->
<!-- <tr>-->
<!-- <th scope="col">이름</th>-->
<!-- <th scope="col">제목</th>-->
<!-- <th scope="col">날짜</th>-->
<!-- <th scope="col">개발 내용</th>-->
<!-- </tr>-->
<!-- </thead>-->
<!-- <tbody id="order-box">-->
<!-- </tbody>-->
<!-- </table>-->
</div>
<div class ="wrap">
<div class="row row-cols-1 row-cols-md-3 g-4">
<div class="col">
<div class="card h-100">
<div class="card-body">
<div class="card">
<h5 class="card-header">${name}</h5>
<div class="card-body">
<h5 class="card-title">제목</h5>
<p class="card-text">오늘은 웹개발 플러스에서 jinja2로 뜻 가져오기를 했다. </p>
<a href="#" class="btn btn-primary">상세 이동</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
