커뮤니티
포인트
로딩중
쿠폰
내 강의실
국비 신청 내역
수강권
증명서
숙제 피드백
계정
로그아웃
학습 질문
개발 일지
나의 활동
답변 완료
Python flask로 서버를 띄웠는데 같은 templates 폴더 내의 html들을 링크하는 방법
[왕초보] 비개발자를 위한, 웹개발 종합반 (프로그래밍 실무, 풀스택)
기타
북마크
신*민
댓글
9
추천
1
조회수
109
조회수
109
답변 완료

개인용 웹을 만드는 중입니다.

배운 내용을 토대로 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'


감사합니다.


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