본문으로 바로가기

Express와 상당히 유사합니다.

 

 

 

간단한 웹 서버 작성

 

from flask import Flask

# 플라스크 앱의 이름을 정해줍니다.
app = Flask("job scrapper")

# decorator(@)는 곧바로 아래의 함수를 찾습니다.
@app.route("/")
def home():
  return "Hello"

# 도메인의 변수를 사용하기 위해서는 <>로 감싸고, 함수의 파라미터로도 넣습니다.
@app.route("/<username>")
def contact(username):
  return f"hello {username}"

# 플라스크 웹 서버를 가동합니다.
app.run(host="0.0.0.0")

 

render_template으로 HTML 렌더링하기

 

플라스크의 규칙에 따라 반드시 templates 폴더 내부에 html을 작성해야 합니다. 자동으로 templates 폴더를 찾기 때문입니다.

# flask
from flask import Flask, render_template

app = Flask("job scrapper")

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

app.run(host="0.0.0.0")

 

 

requests로 쿼리 arguments 가져오기 + 템플릿으로 변수 넘기기

 

렌더링한 html

<form action="/report" method="get">
  <input type="text" place="What job do you want?" required name="search" />
  <button>submit</button>
</form>

input작성 후 나온 도메인. 여기에서 ?(쿼리) 이후 부분을 추출하고 싶다면 flask의 request를 사용하면 됩니다.

https://flaskjobscapper--....repl.co/report?search=react

from flask import Flask, render_template, request

app = Flask("job scrapper")

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

@app.route("/report")
def report():
  # 도메인 쿼리부분을 dict 형태로 가져옵니다.
  word = request.args.get("search")
  return f"you search {word}"

app.run(host="0.0.0.0")

 

렌더링할 템플릿에 변수를 넘기고 싶다면 다음과 같이 템플릿을 렌더링하는 두번째 인자로 넣어주고,

템플릿에서는 {{}} 안에 넣어서 사용하면 됩니다.

 

@app.route("/report")
def report():
  # 도메인 쿼리부분을 dict 형태로 가져옵니다.
  word = request.args.get("search")
  return render_template("report.html", searchingBy=word)
<body>
  <h1>Search Results</h1>
  <h3>You are looking for {{searchingBy}}</h3>
</body>

 

 

Redirect

 

간편하게 redirect를 보낼 수 있습니다.

@app.route("/report")
def report():
  # 도메인 쿼리부분을 dict 형태로 가져옵니다.
  word = request.args.get("search")
  if word:
    word = word.lower()
  else:
    # "/"로 redirect 시킵니다.
    return redirect("/")
    
return render_template("report.html", searchingBy=word)

 

send_file

 

return send_file("jobs.csv", mimetype='text/csv', as_attachment=True)
 

darren, dev blog
블로그 이미지 DarrenKwonDev 님의 블로그
VISITOR 오늘 / 전체