커뮤니티
포인트
쿠폰
내 강의실
국비 신청 내역
증명서
계정
로그아웃
학습 질문
개발 일지
나의 활동
답변 완료
url을 db로 보내는 과정에서 에러는 없는 거 같은데 db로 데이터가 전송이 안되네요... 아닌가 전송이 안되면 그게 에러인가요...
undefined주차
북마크
백*용
댓글
3
추천
0
조회수
8
조회수
8
답변 완료

* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.

* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.


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)

취소
 공유
취소
댓글 0
댓글 알림
나의얼굴