๐Ÿ“Frontend/๐Ÿ““etc

[์ŠคํŒŒ๋ฅดํƒ€ ์ฝ”๋”ฉ ํด๋Ÿฝ]Sever

Hoon2 2022. 3. 2. 00:05
728x90

@4-1. Flask

#์‹œ์ž‘ ์ฝ”๋“œ > localhost:5000 ์ ‘์† 

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)

#ํŒŒ์ผ ๋งŒ๋“ค๊ธฐ 

static : CSS, ์ด๋ฏธ์ง€ ํŒŒ์ผ ๋‹ด์•„๋‘˜๋•Œ, templates : Html ๋‹ด์•„๋‘˜๋•Œ 

from flask import Flask, render_template, jsonify, request
@app.route('/')
def homework():
    return render_template('index.html')

render_ template ๋ฐ”๊พธ๊ธฐ 

 

#index.html ์„ธํŒ…

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
    <title>Document</title>
</head>
<body>
    <h1>์„œ๋ฒ„๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค!</h1>
</body>
</html>

@4-2. API ๋งŒ๋“ค๊ธฐ(GET, POST)

# get : ๋ฐ์ดํ„ฐ ์กฐํšŒ๋ฅผ ์š”์ฒญํ•  ๋•Œ

# post : ๋ฐ์ดํ„ฐ ์ƒ์„ฑ, ๋ณ€๊ฒฝ, ์‚ญ์ œ ์š”์ฒญํ•  ๋•Œ

 

#์˜ˆ์‹œ (Book reivew) POST (3T ๋ฐ์ดํ„ฐ ์ƒ์„ฑ)

def write_review():
    title_receive = request.form['title_give']
    author_receive = request.form['author_give']
    review_receive = request.form['review_give']

    doc = {
        'title':title_receive,
        'author':author_receive,
        'review':review_receive
    }

    db.bookreivew.insert_one(doc)


    return jsonify({'msg': '๋ฆฌ๋ทฐ๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.'})
function makeReview() {
    let title = $("#title").val();
    let author = $("#author").val();
    let review = $("#bookReview").val();

    $.ajax({
        type: "POST",
        url: "/review",
        data: {title_give: title, author_give: author, review_give: review},
        success: function (response) {
            alert(response["msg"]);
            window.location.reload();
        }
    })
}

window.location.reload(); : ์ƒˆ๋กœ๊ณ ์นจ

# GET

def read_reviews():
    reviews = list(db.bookreivew.find({}, {'_id': False}))

    return jsonify({'all_reviews': reviews})
function showReview() {
    $.ajax({
        type: "GET",
        url: "/review",
        data: {},
        success: function (response) {
            let reviews = response['all_reviews']
            for (let i = 0; i < reviews.length; i++) {
                let title = reviews[i]['title']
                let author = reviews[i]['author']
                let review = reviews[i]['review']

                let temp_html = `<tr>
                    <td>${title}</td>
                    <td>${author}</td>
                    <td>${review}</td>
                                  </tr>`
                $('#reviews-box').append(temp_html)
            }

        }
    })
}

@4-3. API ๋งŒ๋“ค๊ธฐ(META ํƒœ๊ทธ)

import requests
from bs4 import BeautifulSoup

url = 'https://movie.naver.com/movie/bi/mi/basic.nhn?code=171539'

headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}
data = requests.get(url,headers=headers)

soup = BeautifulSoup(data.text, 'html.parser')

title = soup.select_one('meta[property="og:title"]')['content']
image = soup.select_one('meta[property="og:image"]')['content']
desc = soup.select_one('meta[property="og:description"]')['content']

print(title, image, desc)

 

('meta[ ]')['content']

 

#POST

@app.route('/memo', methods=['POST'])
def saving():
    url_receive = request.form['url_give']
    comment_receive = request.form['comment_give']

    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}
    data = requests.get(url_receive, headers=headers)

    soup = BeautifulSoup(data.text, 'html.parser')

    title = soup.select_one('meta[property="og:title"]')['content']
    image = soup.select_one('meta[property="og:image"]')['content']
    desc = soup.select_one('meta[property="og:description"]')['content']

    doc = {
        'title':title,
        'image':image,
        'desc':desc,
        'url':url_receive,
        'comment':comment_receive,

 

function postArticle() {
    let url = $('#post-url').val()
    let comment = $('#post-comment').val()


    $.ajax({
        type: "POST",
        url: "/memo",
        data: {url_give:url, comment_give:comment},
        success: function (response) { // ์„ฑ๊ณตํ•˜๋ฉด
            alert(response["msg"]);
            window.location.reload()
        }
    })
}

#GET

@app.route('/memo', methods=['GET'])
def listing():
    articles = list(db.articles.find({}, {'_id': False}))
    return jsonify({'all_articles':articles})
function showArticles() {
    $.ajax({
        type: "GET",
        url: "/memo",
        data: {},
        success: function (response) {
            let articles = response['all_articles']
            for (let i = 0; i < articles.length; i++) {
                let title = articles[i]['title']
                let image = articles[i]['image']
                let url = articles[i]['url']
                let desc = articles[i]['desc']
                let comment = articles[i]['comment']

                let temp_html = ` <div class="card">
                                <img class="card-img-top"
                                     src="${image}"
                                     alt="Card image cap">
                                <div class="card-body">
                                    <a target="_blank" href="${url}" class="card-title">์—ฌ${title}</a>
                                    <p class="card-text">${desc}</p>
                                    <p class="card-text comment">${comment}</p>
                                </div>`

                $('#cards-box').append(temp_html)
            }
        }
    })
}
728x90