
* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.
* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.
vscode내에서는 에러메시지가 나오지는 않지만 db로 데이터 넘기기가 안되네요..
추가로 templates 폴더로 html파일 넣으니까 아이콘이 기존 html아이콘에서 장고아이콘으로 바뀌는데 상관은...없겠죠?
보고 계신 화면 전체를캡처해 주시면, 튜터님들이 빠르게 상황을 이해할 수 있어요.

작성한 코드 및 에러 메세지
index.html 코드입니다>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>오늘의 전시</title>
<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.12.4.min.js"></script>
<style>
html, body, h1, h2, h3, p, a, span{
padding: 0;
margin: 0;
}
.wrap{
width: 1050px;
margin: auto;
/* background: green; */
}
.card-wrap{
display: flex;
flex-direction: row;
flex-wrap: wrap;
}
.card{
display: flex;
flex-direction: column;
align-items: flex-start;
justify-content: flex-start;
width: 320px;
height: 340px;
margin: 16px 10px;
border: 1px solid #000;
/* background: pink; */
}
.card > span{
margin: 8px;
}
.card-image{
width: 100%;
height: 200px;
background: url('https://i.pinimg.com/originals/cc/c2/a8/ccc2a8f21f271c6562361dee577d7490.jpg');
background-position: center;
background-size: cover;
}
.card-title{
font-size: 18px;
font-weight: bold;
}
.period{
font-size: 14px;
color: red;
}
.tags{
font-size: 14px;
word-break: keep-all;
color: orange;
}
.url-form{
align-items: center;
justify-content: space-around;
}
.plus-form{
align-items: center;
justify-content: center;
cursor: pointer;
}
</style>
<script>
$(document).ready(() => {
showPlusForm();
})
const showUrlForm = () => {
$('#url-form').show();
$('#plus-form').hide();
}
const showPlusForm = () => {
$('#url-form').hide();
$('#plus-form').show();
}
const posting = () => {
let url = $('#url').val();
let formData = new FormData()
formData.append("url_give", url)
fetch('/exhibit', {method: "POST", body: formData}).then(res => res.json()).then(data => {
alert(data['msg'])
window.location.reload();
})
}
</script>
</head>
<body>
<div class="wrap">
<h1>오늘의 전시</h1>
<div class="card-wrap">
<div class="card">
<div class="card-image"></div>
<span class="card-title">제목</span>
<span class="period">기간</span>
<span class="tags">#설명회 #설명회 #설명회 #설명회 #설명회 #설명회 #설명회 #설명회 #설명회</span>
</div>
<div id="url-form" class="url-form card">
<input type="text" id="url" placeholder="전시 URL을 입력해주세요!">
<div>
<button onclick="showPlusForm()">취소하기</button>
<button onclick="posting">등록하기</button>
</div>
</div>
<div id="plus-form" onclick="showUrlForm()" class="plus-form card">
<span>+</span>
<span>추가하기</span>
</div>
</div>
</div>
</body>
</html>
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://sparta:test@cluster0.nyqvq2h.mongodb.net/?retryWrites=true&w=majority', tlsCAFile=ca)
db = client.pirates_lv1
@app.route('/')
def home():
return render_template("index.html")
@app.route('/exhibit', methods=["POST"])
def post_exhibit():
url_receive = request.form["url_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('#container > div.wide-inner > section > h3').text
period = soup.select_one('#container > div.detial-cont-element.active > div > dl:nth-child(1) > dd').text.strip()
tags = soup.select_one('#container > section.tag-element.poi > p').text.replace('\n',' ')
image = soup.select('.item')[1]['style'].replace("background-image:url('",'').replace("');",'')
image = 'https://korean.visitseoul.net'+image
doc = {
'url':url_receive,
'title':title,
'period':period,
'tags':tags,
'image':image
}
db.exhibition.insert_one(doc)
return jsonify({"msg": "저장 완료!"})
if __name__ == "__main__":
app.run(debug=True, port=8080)
