이노베이션캠프/웹프로젝트-1 (python , html )

[TIL] 오류정리1 : python flask 관련 오류

개린이다 2023. 6. 8. 22:25

💙 어떤 문제가 있었나?

: python flask 를 통한 서버연결에서는 너무 많은 오류가 발생했었다. 당연한 오류들이면서도 처음 공부하고 사용 하다보니 놓칠 수밖에 없던 오류들이라, 이 오류들을 정리해보려고 한다. 딱히 무언가를 찾아봤다기 보다는 깨달음같이 '아! 이래서 오류가 났었구나!'했던 것들이라 간단히 정리하려고 한다.

 

💚 오류내용

1. 루트의 이름은 "당연히" 다 달라야한다.

@app.route('/')
def home():
    return render_template('index.html')

@app.route('/')
def subpage():
    return render_template('subpage.html')

- 당연한 말이다.

- route 란 ?

1) url 을 연결시켜주는 곳

2) Request가 왔을 때, router 가 제일 먼저 받는곳

- 코드는 순차적으로, 즉 위에서부터 아래로 실행된다. 그러므로 똑같은 route url 이 있으면, python은 위의 것만 실행시켜 준다.

 

2. 함수의 이름은 "당연히" 다 달라야한다.

@app.route('/')
def home():
    return render_template('index.html')

@app.route('/yelin')
def home():
    return render_template('subpage.html')

- 이것도 정말 당연한 말.. 이지만 몰랐어서 한참을 헤맸다.

- 객체 관련된 내용이라 생각하면 된다. 아래에 정리해보자면

- def 를 만다면, 함수 객체가 생성되고, 함수명으로 지어진 공간에 할당이 일어난다. 

그래서 함수이름을 두 개 이상 정의하면, 간단히 말해 같은 공간에 여러번 할당이 일어난다는 것. 

- 그렇기에 이럴 경우 오류가 난다. 

- 함수의 이름은 모두 다르게 해주자!

 

https://www.codeit.kr/community/questions/UXVlc3Rpb246NjAxNGM0MDE4OWU1Y2YxODgyZWE4ZmQ1

 

 

같은 함수명으로 여러번 함수 정의하기

 

www.codeit.kr

3. if __name__ == '__main__':

if __name__ == '__main__':
    app.run('0.0.0.0', port=5001, debug=True)

- 났던 오류 :

저 코드 아래 route 들이 실행이 안됐다 ㅋㅋㅋ 당연함.. 근데 처음에는 이유를 못찾아 방황했었다.. 이것도 당연함.. 코드 공부보단 일단 따라치고 복붙함..

- 일단 위의 코드 내용을 그대로 해석해보자

if : 만약 

__name__ : name 이라는 변수의 값이 

'__main__' 과 

== 같다면

아래의 코드를 실행하라!

- 즉, 메인함수의 선언, 시작을 의미한다. 

- 관련 자료

https://velog.io/@mjk3136/if-name-main%EC%9D%80-%EC%99%9C-%ED%95%84%EC%9A%94%ED%95%9C%EC%A7%80%EC%97%90-%EB%8C%80%ED%95%B4-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90

 

if __name__ == “__main__”은 왜 필요한지에 대해 알아보자

집중합시다. 집중!!🔥

velog.io

- 간단히 정리하자면, 가장 처음 실행되는 함수가 __main__의 값을 가지게 된다. 그러므로 스크립트 파일이 메인으로 사용되길 바라면 위의 코드를 넣으면 된다.

< 쉽게 생각하면 모듈에 if __name__=='__main__'이라는 조건문을 넣어주고 그 아래는 직접 실행시켰을 때만 실행되길 원하는 코드들을 넣어주는 것으로 생각하면 쉬울 것이다. -위의 링크>

 

5. 연결하는 법(관련 블로그 링크 넣기)

- flask 에서 다른 링크를 연결하려면 어떻게 해야할까?

https://thdud4479.tistory.com/41

 

웹개발4 - Flask에서 내부링크 연결(페이지연결)

Flask에서 내부링크 연결하기 링크를 연결하기 위한 일반적인 태그 사용법 이동 하지만 Flask에서 내부링크를 연결하기 위한 사용법 이동 홈으로 라우팅한 페이지 연결은 살짝 다르게 생김 Waste-les

thdud4479.tistory.com

블로그 내용 참고!

 

6. headers=headers

data = requests.get(url_receive, headers=headers)

https://hotel-iu.tistory.com/303

 

파이썬 요청 모듈 requests get, post, header 사용 방법

파이썬 요청 모듈 requests get, post, header 사용 방법 요청 모듈은 Python 스크립트에서 HTTP 요청을 간단하게 만드는 인기 있는 Python 라이브러리입니다. 아름답고 단순한 API 이면에서 요청을 만드는 복

hotel-iu.tistory.com

- 크롤링할 때, 저 headers=headers 때문에 크롤링이 안되는 줄 알았어서 (사실 아님) 찾아봤던 내용 간단히 정리

- 위의 오류도 살짜쿵 설명하고 가자면, 카카오맵의 사진을 가지고 오고 싶었으나 동적 으로 이미지를 보여주는 거였어서 안됐다,,,,,

- 저 headers=headers 는 그냥 헤더 내용도 갖고 와줘~ 이거였음 ㅋ (header만 가지고 와줘! 아님)