본문 바로가기
공부기록/Python

6월 14일 (2) python - Web

by project100 2023. 6. 14.

'__name__' 과 '__main__'

 

__name__은 특수변수로 코드(스크립트)파일이 단독으로 실행되거나 프로그램의 시작점으로 실행되는 경우에는 '__main__' 문자열을 저장하며, 모듈로 실행될 때에는 '.py'를 제외한 파일 이름이 저장된다.  

 

if __name__ == '__main__':

     메인일 때만 실행할 코드.....

 

프로그램을 시작할 때 '__name__'의 값을 확인함을써 모듈인지 메인인지를 구별하고, 메인일 때만 실행해야 하는 코드의 실행을 막는다.

 

 

파이썬 코딩 도장: 45.2 모듈과 시작점 알아보기

인터넷에 있는 파이썬 코드를 보다 보면 if __name__ == '__main__':으로 시작하는 부분을 자주 만나게 됩니다. if __name__ == '__main__':     코드 도대체 이 코드는 왜 사용하는 것일까요? 이 코드는 현재

dojang.io

메인일 때, 서버로서 사용

if __name__ == '__main__':
        print("name_ex.py의 __name__ : ",__name__)

 

모듈일 때, 서버로 가동시키지 않기 위해서 

       name_ex.py의 __name__ :  name_ex

 

Flask 모듈

마이크로 웹 프레임워크

파이썬으로 웹 서버를 구축할 수 있는 라이브러리

 

설치

> pip install Flask

 

+ 파이썬 파일 만들 때

flask 파일 만들면 충돌이 일어나기 때문에 py파일 만들 때 flask 명 쓰지 말기!

 

터미널에서 서버 종료 시키기(서버 종료가 안 되면 변경처리가 안됨)

Press CTRL+C to quit

 

개발 시에는 debug=True 모드로 바꿔서 사용

http://127.0.0.1:5000/

 

 

 

대소문자 구분하기

from flask import Flask

 

1) flask 객체 생성

    식별자 = Flask(__name__)

__name__의 값을 전달하여 flask 인스턴스를 생성

 

2) flask 실행

    식별자.run()

 

run() 메서드 옵션>

- debug=True : 개발 시에 설정, 코드가 변경되면 자동으로 flask 재시작

- port=번호 : 포트번호 변경, 기본 포트번호 5000

 

3) url 매핑 : @app.route('/url', methods=['GET'])

get방식 : methods=['GET']

post방식 : methods=['POST'] 

 

4) url을 통한 데이터 전송

    @app.route('/url/<data1>/<data2>')

    def method(data1, data2)

      

    숫자 유형의 데이터

    @app.route('/url/<int:data>')

    def method(data)

 

5) render_template('html파일')

templates 폴더 - html 파일 존재

from flask import Flask, render_template # Flask 클래스 가져오기

# Flask 객체 생성
app = Flask(__name__)

# url 매핑
@app.route("/") # get/postmapping과 비슷
def home():
    return '''
           <h1>hello flask</h1>
           <p>안녕하세요</p>
           <p><a href="second/abc">다음</a>
           <a href='third'>세번째</a>
           </p>  
           '''
           
@app.route("/second/<data>")
def second(data):
    return f'<h1>두번째 페이지</h1><p>{data}</p>'   
       
@app.route("/third")
def third():
    m = 'hi'
    return render_template("third.html", msg=m)

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

 

'공부기록 > Python' 카테고리의 다른 글

6월 15일 python - GUI(tkinker)  (0) 2023.06.15
6월 15일 python - Web2  (0) 2023.06.15
6월 14일 (1) python - 예외처리, 패키지  (0) 2023.06.14
6월 13일 python - 클래스  (0) 2023.06.13
6월 12일 (2) python - 모듈  (0) 2023.06.12