Python

nomard) python기초 (Flask로 웹페이지 만들기)

hojomu 2023. 3. 10. 11:03

https://nomadcoders.co/python-for-beginners

1) Flask 다운로드, 서버 만들기

vscode의 터미널에서
pip install Flask

Flask 다운로드 후

 - flask 로 부터 Flask를 import해서 사용할 수 있다.

app = Flask("JobScrapper")
-> Flask 선언

app.run("0.0.0.0")
-> Flask를 실행해서 괄호 속의 ip를 가진 서버를 만든다. ( 0.0.0.0 ) 은 누구나 접근 가능

@app.route("/")
def home():
	return "hey there!"
-> 제일 위의 decorator가 함수를 decorating 하고 있을 때만 동작한다

.route("/") 의 뜻은 도메인 이후에 나오는 / 밑으로 아무 것도 없다는 뜻으로
홈페이지의 홈 화면이라고 할 수 있다.

 


2 _ HTML 적용시키기 ( rendering 하기 )

Flask는 항상 HTML 파일을 templates 폴더 내부에 넣어야한다 ( 자동으로 해당 폴더를 찾는다, 폴더의 위치도 main.py와 동일해야함. )

 

1) rendering 설정하기

 - main.py 파일에 render_template 를 import 했다. 해당 요소가 template폴더에 들어있는 html 파일을 가지고 올 것이다.

home() 함수의 return 값으로 render_template("home.html", name="nico") 가 있다.

해당 부분은 home.html을 현제 서버에 불러와서 나타내겠다는 뜻이고 동시에 name 이라는 변수에 nico 라는

문자열을 저장시켜서 home.html을 불러올 때 같이 나타내겠다는 뜻이다.

render_template("HTML.html" , rendering 하고싶은 데이터 , ... )
-> HTML 파일을 불러오면서 동시에 rendering 하고싶은 데이터를 같이 보낼 수 있다.
rendering 할 데이터는 몇개가 되던 상관 없다.

 - main.py 에서 rendering한 name 변수는 html에서 {{name}} 으로 불러올 수 있다.

 


2) form 설정하기

 - home.html 문서에 검색어를 입력할 form 내부에 input과 button을 만들었다.

 - input 칸에 python을 넣고 search를 누르면 URL에 ?keyword=python이 나온다. 이것을 이전에 만들었던 scrapper에서 사용했던 것 처럼 이용할 것이다.

** input 속성중에 name="keyword" 때문에 ?keyword=python 형태로 URL에 나타난 것이다.

 

form의 속성중에 action="/텍스트" 를 넣을 경우 form에서 submit을 했을 때 도메인/텍스트 로 이동한다

form태그에 action="/search" 속성이 있다면 submit 했을 때

http://www.domain.com/search 로 이동한다.

 

 ** python을 입력하고 search 했더니 주소창에 /search?keyword=python이 생겼다.

form의 action과 input의 name 속성의 영향이다.

 

 - 이 기능을 이용해서 main.py에 새로운 데코레이터를 만들 수 있다.

명령어를 넣어주면, input에 값을 넣고 Search 버튼을 누른 이용자는 새로운 페이지로 이동할 수 있다.

 


3) input으로부터 arguments 받기

 - input에 python을 입력하고 submit 했을 때 어떤 arguments가 request로 들어오는지 알아보자.

 - 결과로는 input의 name인 keysowrd와 입력했던 python이 나왔다.

 

 - 앞서 만들었던 extractors 들을 import해서 search의 결과로 쓸 keyword와 jobs를

search.html 에 같이 첨부해서 보냈다.