import json
import os
from flask import Flask, render_template, request, jsonify, redirect, url_for, session
import pymysql
import pymysql.cursors
app = Flask(__name__)
app.secret_key = "ThisIsSecretKeyOfSession"
@app.route('/')
def home():
if "login_name" in session:
return render_template('main.html')
else:
return render_template('login.html')
@app.route('/main')
def main():
return render_template('main.html')
# main 에서 포스트 클릭 시 상세 페이지로.
@app.route('/detail', methods=["GET", "POST"])
def detail():
if session.get("login_name") is None:
return redirect(url_for("home"))
post_id_receive = int(request.args.get("post"))
print('무사히 접근. ', post_id_receive)
# 해당 포스트의 디테일
db = pymysql.connect(host="localhost", port=3306, user="root", db='sparta_test', password='1q2w3e4r',
charset='utf8')
cur = db.cursor(pymysql.cursors.DictCursor)
sql = "SELECT vp.id, vp.title, vp.content, vp.login_name, vp.user_id, u.name, u.email, u.nick_name, u.blog_name, u.profile_img, u.intro_myself FROM velog_post AS vp INNER JOIN users AS u ON vp.user_id = u.id WHERE vp.id = %s;"
cur.execute(sql, post_id_receive)
post_detail_result = cur.fetchall() # [{}] 배열의 0번째 인덱스에 딕셔너리 형태로 1개.
db.close()
# 해당 포스트에서 사용된 이미지
db = pymysql.connect(host="localhost", port=3306, user="root", db='sparta_test', password='1q2w3e4r',
charset='utf8')
cur = db.cursor(pymysql.cursors.DictCursor)
sql = "select * from velog_post_img where post_id = %s"
cur.execute(sql, post_id_receive)
img_result = cur.fetchall() # 0개 일 경우 () 이렇게 빈 튜플로 나와.
db.close() # 1개 이상일 경우, [{}, {}] 이렇게 배열 안에 레코드가 차례대로.
doc = {"detail": post_detail_result[0]}
if img_result != ():
doc["images"] = img_result
return render_template('detail.html', detailDict=doc)
# detail 화면이 처음 구성된 직후, 이전 글과 이후 글에 대한 정보를 가져올거야
@app.route("/otherDetail", methods=["POST"])
def other_detail():
user_id_receive = int(request.form["user_id_give"])
post_id_receive = int(request.form["post_id_give"])
print(f'user_id_receive : {type(user_id_receive)}, {user_id_receive}')
print(f'post_id_receive : {type(post_id_receive)}, {post_id_receive}')
# 이전 글의 post_id 가져오기
db = pymysql.connect(host="localhost", port=3306, user="root", db='sparta_test', password='1q2w3e4r',
charset='utf8')
cur = db.cursor(pymysql.cursors.DictCursor)
sql = "SELECT id, title FROM velog_post vp WHERE user_id = %s AND id = (SELECT max(id) FROM velog_post vp2 WHERE user_id = %s AND id < %s);"
cur.execute(sql, (user_id_receive, user_id_receive, post_id_receive))
post_detail_before = cur.fetchall() # [{}] 배열의 0번째 인덱스에 딕셔너리 형태로 1개.
db.close()
# 이후 글의 post_id 가져오기
db = pymysql.connect(host="localhost", port=3306, user="root", db='sparta_test', password='1q2w3e4r',
charset='utf8')
cur = db.cursor(pymysql.cursors.DictCursor)
sql = "SELECT id, title FROM velog_post vp WHERE user_id = %s AND id = (SELECT min(id) FROM velog_post vp2 WHERE user_id = %s AND id > %s);"
cur.execute(sql, (user_id_receive, user_id_receive, post_id_receive))
post_detail_next = cur.fetchall() # [{}] 배열의 0번째 인덱스에 딕셔너리 형태로 1개.
db.close()
##### 값이 없을 경우 () 이렇게 튜플로 나와.
print(post_detail_before, '//', post_detail_next)
doc = {
"before": post_detail_before,
"after": post_detail_next
}
return jsonify({'msg': 'detail 이전, 이후 글 get!', "result": doc})
'내일배움캠프_개발일지 > 내일배움캠프_미니프로젝트' 카테고리의 다른 글
내일배움캠프 미니 프로젝트 '팀 소개 페이지 만들기' 완료 후 KPT 정리 (0) | 2022.11.20 |
---|---|
내일배움캠프_미니프로젝트 5일차, 게시판을 만들어보자. (1) | 2022.11.18 |
팀 미니 프로젝트 "팀 소개 페이지 만들기" 결과물 정리. (0) | 2022.11.18 |
내일배움캠프_미니프로젝트_팀소개SA(Starting Assignments) 3일차 (0) | 2022.11.16 |
내일배움캠프_미니프로젝트_팀소개SA(Starting Assignments) 2일차 (0) | 2022.11.15 |