벌써 3일차!!!
왕초보반 할 때 11일동안 듣던 걸 3일만에 다 들으려니 멘탈이 바사삭....
그래도 그때 완전히 이해하지 못한 것들이 머릿속에 정리되는 느낌이다!!
오늘도 화이텡!
flask
- flask 기본 코드
from flask import Flask, render_template app = Flask(__name__) @app.route('/') def home(): return '나의 첫 서버!!' if __name__ == '__main__': app.run('0.0.0.0',port=5000,debug=True)
- 서버를 열기 위해 필요한 프로그램이다.
- render_template: html 파일을 불러와서 보여준다.(return render_template('html 파일명'))
GET / POST
1. 클라이언트와 서버 확인하기
2. 서버부터 만들기
3. 클라이언트 만들기
4. 완성 확인하기
- POST
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();
}
})
}
@app.route('/review', methods=['POST'])
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.bookreview.insert_one(doc)
return jsonify({'msg': '저장 완료!'})
- GET
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)
}
}
})
}
@app.route('/review', methods=['GET'])
def read_reviews():
reviews = list(db.bookreview.find({}, {'_id': False}))
return jsonify({'all_reviews': reviews})
GET / POST 를 무한반복 중...
이제 조금씩 혼자서 할 수 있을 것 같다!!!!
진짜 인간승리ㅠㅠㅠㅠ
잘 까먹는거 위주로 적어놔야겠다!
alonememo_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
}
db.articles.insert_one(doc)
return jsonify({'msg':'기사가 저장되었습니다!'})
- 클라이언트로부터 url_receive, comment_receive 라는 이름으로 url_give, comment_give 를 받는다.
- 받은 url_receive를 가지고 크롤링을 해서 title, image, desc를 가져온다.
- doc을 만들고 가져온 값들을 db에 담는다.(db.articles.insert_one(doc))
- return 값으로 msg를 보낸다.
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();
}
})
}
- url, comment 라는 이름으로 입력되는 값을 받는다.
- 입력된 값을 url_give, comment_give라는 이름으로 서버에 보낸다.
- 성공하면 msg를 받아온다.
- window.location.reload(); => 새로고침
alonememo_GET
@app.route('/memo', methods=['GET'])
def listing():
articles = list(db.articles.find({}, {'_id': False}))
return jsonify({'all_articles':articles})
- articles = 몽고디비 articles 안에 있는 데이터를 불러온다.
- all_articles라는 이름으로 불러온 articles를 return 한다.
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 comment = articles[i]['comment']
let desc = articles[i]['desc']
let image = articles[i]['image']
let title = articles[i]['title']
let url = articles[i]['url']
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>
</div>`
$('#cards-box').append(temp_html)
}
}
})
}
- 서버로부터 받아 온 all_articles를 articles로 받고 for문으로 돌려준다.
- 각 값을 각 이름으로 받은 후 temp_html로 찍어준다.
- $('#cards-box').append(temp_html)로 나타낸다.
@app.route('/')
def home():
return render_template('index.html')
- html 파일을 불러오는 코드
'내일배움캠프_개발일지' 카테고리의 다른 글
내일배움캠프 5일차_개발일지(TIL에 대한 이야기 + GIT 팁 별 실습) (2) | 2021.09.17 |
---|---|
내일배움캠프 4일차_개발일지(첫 실시간 강의_git) (0) | 2021.09.17 |
내일배움캠프 2일차_개발일지(2주차-2 ~ 3주차) (0) | 2021.09.15 |
내일배움캠프 2일차_개발일지(2주차-1) (0) | 2021.09.14 |
새로 시작하는 마음으로 쓰는 개발일지_내일배움캠프 1일차(1주차,2주차) (0) | 2021.09.13 |