Security Engineer 2022. 12. 29. 21:00

6.3 Form

 

기존의 home.html 코드를 변경해준다. ( Jobscrapper 에 필요한 버튼 만들기 )

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Job Scrapper</title>
</head>
<body>
    <h1>Job Scrapper</h1>
    <h4>What job do you want?</h4>
    <form>
        <input type="text" name="keyword" placeholder="Write keyword please" />
        <button>Search</button>
    </form>
</body>
</html>

코드 저장 후 main.py 로 코드 실행

from flask import Flask, render_template

app = Flask("JobScrapper")

@app.route("/")
def home():
    return render_template("home.html", name="james", age=20)

@app.route("/hello")
def hello():
    return 'hello you!'

app.run("0.0.0.0")

콘솔창:

크롬창을 새로 열고 주소창에 127.0.0.1:5000 을 입력하여 접속한다.

이제 search 칸에 python 을 입력하면 아래와 같이 input 의 name 인 keyword 가 URL 에 보여진다.

이전에 했던 jobscrapper 에서 보았던 형식과 비슷하다.

하지만 python 을 입력한다고 해서 웹페이지의 화면이 바뀌지 않는다.

URL 만 약간 바뀔뿐.

이제 html 의 form action 을 사용해서 변경해본다.

action은 form 이 어디로 가는지를 알려준다.

→ <form action="/search"> 코드 추가 form 입력 시 /search 로 이동.

 

< home.html  > 아래 코드로 변경

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Job Scrapper</title>
</head>
<body>
    <h1>Job Scrapper</h1>
    <h4>What job do you want?</h4>
    <form action="/search">
        <input type="text" name="keyword" placeholder="Write keyword please" />
        <button>Search</button>
    </form>
</body>
</html>

main.py 다시 실행 후 크롬창에서 127.0.0.1:5000 접속

input 창에 python 입력 후 엔터 ( search )

 

결과는 Not Found 지만 url 은 /search?keyword=python 이 되었다.

이를 통해 사용자에게 결과를 보여주는 부분을 ( 다른 페이지를 ) 만들 수 있다는 것을 알게되었다.

 

이제 /search 페이지를 위한 route 를 만들어본다.

@app.route 를 사용해서 사용자가 작성한 keyword 를 ( 예: python )가져온다.

그 전에 templates 폴더에 search.html 파일을 새로 만든다.

 

< search.html >

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Job Scrapper</title>
</head>
<body>
    <h1>Search Results:</h1>
</body>
</html>

 

이제 /search 페이지를 위한 route 를 만들어본다.

@app.route 를 사용해서 사용자가 작성한 keyword를 ( 예: python )가져온다.

return 을 사용하여 template 의 search.html 파일의 값을 반환한다.

 

< main.py >

from flask import Flask, render_template

app = Flask("JobScrapper")

@app.route("/")
def home():
    return render_template("home.html", name="james", age=20)

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

app.run("0.0.0.0")

search.html 저장 후 main.py 코드를 실행하고, 크롬창을 새로 열고 주소창에 127.0.0.1:5000 입력 후 접속한다. 

input 창에 python 입력 하면 아래 페이지로 접속된다.

search.html 에 저장된 Search Results: 문자열이 화면에 뜬다.

 

 

 

 

 


python 참고 강의

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