본문 바로가기
Python

[Python] Flask basics

by busybee-busylife 2024. 7. 18.
반응형

 

Render Template / Form 

- "JobScrapper"라는 이름을 붙인 app 변수 만들기 

 

- 마지막에 app.run() 함수를 호출: Flask Application 생성

        ("0.0.0.0"): 브라우저와 서버 콘솔을 열어줌 

 

- 페이지에 도달했을 때 응답하기: 데코레이터 + 함수(템플릿을 리턴) 

        @app.route("/"): / 페이지에 도달하면 home 함수를 실행 

        @app.route("/search"): /search 페이지에 도달하면 hello 함수를 실행 

        render_template 함수: Flask가 templates 폴더를 들여다보도록 한다 

 

templates 폴더는 main.py와 같은 계층에 있도록 한다 

폴더 이름을 변경할 수 없다 

 

 

 

Arguments 

request: 브라우저가 웹사이트에 가서 콘텐츠를 요청

 

 

가져온 jobs를 render 하기

from flask import Flask, render_template, request, redirect, send_file
from extractors.remoteok import get_jobs
from file import save_to_file

app = Flask("JobScrapper")


@app.route("/")  # 유저가 이 주소의 페이지를 방문하면
def home():  # 이 함수를 호출한다
  return render_template("home.html", name="nico")


db = {}
# 한번 extract한 데이터는 여기에 저장해둔다
# fake database: 서버가 켜져있을 때만 메모리에 유지된다 


@app.route("/search")
def search():
  keyword = request.args.get("keyword")  # URL에 있는 "keyword"를 받아온다
  if keyword == None:
    return redirect("/")
  if keyword in db:  # 예전에 extract한 적이 있어서 해당 키워드가 db에 있다면
    jobs = db[keyword]  # db[keyword]를 반환한다
  else:
    jobs = get_jobs(keyword)  # db에 없으면 새롭게 extract한다
    db[keyword] = jobs

  return render_template("search.html", keyword=keyword, jobs=jobs)


@app.route("/export")
def export():
  keyword = request.args.get("keyword")
  if keyword == None:
    return redirect("/")
  if keyword not in db:
    return redirect(f"/search?keyword={keyword}")
  save_to_file(keyword, db[keyword])
  return send_file(f"{keyword}.csv", as_attachment=True)


app.run("0.0.0.0")
반응형

'Python' 카테고리의 다른 글

[Python] OOP  (0) 2024.07.17