반응형
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 |
---|