<jupyter_start><jupyter_text>Flask를 활용한 웹페이지(또는 서버) 만들기 Flask + htmlFlask는 python을 이용해 웹서버를 구축할 수 있는 프레임워크로써, 사용하기 위한 기본 형태는 다음과 같다.<jupyter_code>from flask import Flask
app = Flask(__name__)

@app.route('/')
def main():
    return "Hello, World!"

if __name__ == '__main__':
    app.run()<jupyter_output><empty_output><jupyter_text>먼저 from flask import Flask 로 flask module을 import 한다.app = Flask(\_\_name\_\_) 은 Flask 앱, 즉 웹 서버를 의미한다.if \_\_name\_\_ == '\_\_main\_\_': 에서 서버를 실행시키는데, 이때 debugging 모드나 외부 포워딩 등을 설정할 수 있다.@app.route('경로') 는 url 상에서의 경로를 routing 하는데, 예를들어@app.route('/hello/')아래의 함수는 http://127.0.0.1/hello/ 로 접속했을 때 실행될 함수를 의미한다. 위에서는 http://127.0.0.1/ 에 접속할 경우 main() 이라는 함수가 실행되면서 Hello, World! 가 출력된 페이지가 나온다.<jupyter_code>from flask import Flask, render_template
app = Flask(__name__)

@app.route('/render')
def render():
    return render_template('index.html')<jupyter_output><empty_output><jupyter_text>이미 html로 작성된 페이지를 return 해주기 위해서는  render_template 라는 함수를 import 해야한다. render_template('index.html') 함수를 이용하면 되는데, 이때 index.html 파일은 templates 라는 폴더 안에 저장되어있어야 한다.그 외에도 다음과 같이 변수를 넘겨주거나, get/post 방식으로 전달된 데이터를 받을 수 있다.<jupyter_code>#@app.route('/hello/<int:name>')
#@app.route('/hello/<float:name>')
#@app.route('/hello/<path:name>')
@app.route('/hello')
@app.route('/hello/<name>')
def hello(name=None):
    if name:
        string = "hello {}!".format(name)
        return string
    else:
        return "hello world!"


@app.route('/method', methods=['GET', 'POST'])
def method():
    if request.method == 'POST':
        return "post 방식 접근 {}".format(request.form.get('key'))
    else:
        return "get 방식 접근 {}".format(request.args.get('key'))

@app.route('/post')
def post():
    v = 1
    return render_template("post.html", va = v)<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.16055555555555556, 'fraction_numerical': 0.007222222222222222, 'mean_word_length': 4.073239436619718, 'pattern_counts': {'":': 0, '<': 17, '<?xml version=': 0, '>': 17, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 3, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '3', 'dir': 'jupyter-structured-clean-dedup', 'id': '596047', 'license': 'MIT', 'n_tokens_mistral': 909, 'n_tokens_neox': 1055, 'n_words': 188, 'path': 'python/+Flask.ipynb', 'repo_name': 'lafamila/lafamila', 'size': '1800'}