개인용 웹을 만드는 중입니다.
배운 내용을 토대로 Python flask로 서버를 띄우고 html과 ajax로 데이터를 주고받고 있습니다.
그런데, index.html에서 버튼에 링크를 걸어서 다른 페이지를 불러오려고 했더니 templates폴더에 있는 html 링크도 읽지 못하더군요.
구글링 해보니 서버 쪽에서 아래와 같이 render_template를 시켜줘야 한다는데, 그러면 수 없이 많은 웹페이지를 링크를 모두 저렇게 별도의 directory를 만들어줘야 하는건 아닐 것 같은데 다른 방법이 있을까요?
@app.route('/myonbid')
def myonbid():
return render_template('myonbid.html')
그리고, 함수 또한 저렇게 directory로 구분해주고,
@app.route('/myonbid')
def myonbid():
return render_template('myonbid.html')
@app.route("/myonbid", methods=["POST"])
def myonbid_call():
url = 'http://openapi.onbid.co.kr/openapi/services/ThingInfoInquireSvc/getUnifyUsageCltr'
sido_receive = request.form['sido_give'].strip()
sgk_receive = request.form['sgk_give'].strip()
doc = []
print(sido_receive + sgk_receive)
params = {'serviceKey': dkey, 'SIDO': sido_receive, 'SGK': sgk_receive}
#--------------------------------------------------------
xml = requests.get(url, params, headers=headers).text
soup = BeautifulSoup(xml, 'xml')
items = soup.find_all('item')
# try:
for item in items:
doc.append({
# '시도': item.find('SIDO').text,
# '시군구': item.find('SGK').text,
'용도': item.find('CTGR_FULL_NM').text,
'물건명': item.find('CLTR_NM').text,
'물건소재지': item.find('LDNM_ADRS').text,
'최저입찰가': item.find('MIN_BID_PRC').text,
'평균감정가': item.find('APSL_ASES_AVG_AMT').text,
'물건상세정보': item.find('GOODS_NM').text
})
# except Exception as e:
# continue
print(doc)
return jsonify({'result': doc})
ajax에서 아래처럼 url로 지정해줘야 하는건가요?
아니면 같은 directory 내에 여러 함수를 넣고 그 중에 특정 함수를 ajax로 지정해서 호출할 수 있는 방법이 있을까요?
$.ajax({
type: 'POST',
url: '/myonbid',
data: { sido_give: sido, sgk_give: sgk },
success: function (response) {
console.log("성공", response['result']);
요약하면,
1. 같은 서버 내의 여러 웹페이지들을 서로 링크해서 버튼 등을 이용해 불러오는 방법
2. 같은 서버 내의 같은 directory내의 여러 함수들 중 특정 함수를 ajax로 호출하는 방법
3. 마지막으로 한가지만 더...
아래처럼 render_template을 위해 @app.route라는 명령어(? 이걸 뭐라고 불러야 할까요...)를 하나 썼는데, 밑에 함수를 만들기 위해서 한번 더 저렇게 써주는게 맞을까요? 최적화 방법을 좀...
@app.route('/myonbid')
def myonbid():
return render_template('myonbid.html')
@app.route("/myonbid", methods=["POST"])
def myonbid_call():
url = 'http://openapi.onbid.co.kr/openapi/services/ThingInfoInquireSvc/getUnifyUsageCltr'
감사합니다.