๐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