4주차를 마무리 하며!

김영웅·2022년 4월 22일
0

TIL

목록 보기
4/10

3주차를 작성한지 얼마안되어서 4주차를 클리어했다.. 이제 한주차만 더 나가고 나서 다시 출항시험전까지 다시 완강을 해보는게 목표이다 이번 4주차 숙제는 1주차와 비슷한 홈페이지를 만들고 팬명록을 만들고 닉네임과 댓글을 작성하며 데이터를 몽고디비에 그 정보들을 기록하는 시스템을 만들었다.. 이번에도 완벽하게 완성하지못해서 숙제해설을 참조하며 완성해 나갔다.. 다시 완강할때에는 나혼자만의 힘으로 완성해나가야겠다 구글링은 해야지!

4주차의 주요 코드이다

app.py
from flask import Flask, render_template, request, jsonify
app = Flask(name)

import requests
from bs4 import BeautifulSoup

from pymongo import MongoClient
import certifi

ca = certifi.where()

client = MongoClient('mongodb+srv://test:sparta@cluster0.jcpfl.mongodb.net/Cluster0?retryWrites=true&w=majority', tlsCAFile=ca)
db = client.dbsparta

doc = {
'name':'bob',
'age':27
}

db.users.insert_one(doc)

@app.route('/')
def home():
return render_template('index.html')

@app.route("/homework", methods=["POST"])
def homework_post():
name_receive = request.form["name_give"]
comment_receive = request.form["comment_give"]

doc = {
    'name': name_receive,
    'comment': comment_receive
}

db.homework.insert_one(doc)
return jsonify({'msg':'응원 완료!'})

@app.route("/homework", methods=["GET"])
def homework_get():
comment_list = list(db.homework.find({},{'_id':False}))
return jsonify({'comments':comment_list})

if name == 'main':
app.run('0.0.0.0', port=5000, debug=True)

index.html

<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>

<title>초미니홈피 - 팬명록</title>

<link href="https://fonts.googleapis.com/css2?family=Noto+Serif+KR:wght@200;300;400;500;600;700;900&display=swap" rel="stylesheet">
<style>
    * {
        font-family: 'Noto Serif KR', serif;
    }
    .mypic {
        width: 100%;
        height: 300px;

        background-image: linear-gradient(0deg, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.5)), url('https://kin-phinf.pstatic.net/20220306_148/164653542164230WAR_JPEG/9050B568-9A1C-4087-89FE-DBE231686F93.jpeg?type=w750');
        background-position: center 30%;
        background-size: cover;

        color: white;

        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
    }

    .mypost {
        width: 95%;
        max-width: 500px;
        margin: 20px auto 20px auto;

        box-shadow: 0px 0px 3px 0px black;
        padding: 20px;
    }

    .mypost > button {
        margin-top: 15px;
    }

    .mycards {
        width: 95%;
        max-width: 500px;
        margin: auto;
    }

    .mycards > .card {
        margin-top: 10px;
        margin-bottom: 10px;
    }
</style>
<script>
    $(document).ready(function () {
        show_comment();
    });
    function save_comment() {
        let name = $('#name').val()
        let comment = $('#comment').val()

        $.ajax({
            type: "POST",
            url: "/homework",
            data: {'name_give':name, 'comment_give':comment},
            success: function (response) {
                alert(response["msg"])
                window.location.reload()
            }
        });
    }
    function show_comment() {
        $('#comment-list').empty()
        $.ajax({
            type: "GET",
            url: "/homework",
            data: {},
            success: function (response) {
                let rows = response['comments']
                for (let i = 0; i < rows.length; i++) {
                    let name = rows[i]['name']
                    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">${name}</footer>
                                            </blockquote>
                                        </div>
                                    </div>`
                    $('#comment-list').append(temp_html)
                }
            }
        });
    }
</script>

애쉬아일랜드 팬명록

현재기온: 14

닉네임
응원댓글
댓글 남기기
    </div>
</div>
profile
주니어 PM을 꿈꾸고 있습니다!

0개의 댓글