しがないSE 成長日記

とあるエンジニアによる記録・記憶のための情報記録用ブログです

【Python】【flask】PythonからHTMLに値やHTML文を渡す方法(普通の値とHTML文)

個人的なメモとして。

あくまで駆け出しエンジニアが書いていることなので、語句とか間違いとかあれば適宜修正いただけると助かります。

 

Pythonプログラミング言語、flaskを動かすために必要

flask:簡単にWebサイトが作れるよーってやーつ、フレームワーク

 

PythonからHTMLファイルに値を渡す

これは簡単だった。

[Python側]

from flask import Flaskrender_template

app = Flask(__name__)

@app.route('/')
def hello():
   return render_template('hello.html'title='Home'name='Jimmy')    
 

 

[HTML側]

<!DOCTYPE html>
<html>
    <head>
        <title>{{ title }}</title>
    </head>
    <body>
        <p> {{ name }}</p>
    </body>
</html>

で、Python→HTMLに値が渡せる。

 

問題はこの渡すときに特殊なものを渡したい場合。それが↓

 

PythonからHTMLに、HTML文を渡したい場合

言い方あってるかわかりませんが、さっきは"Jimmy"を渡してたのを、赤文字の"Jimmy"を渡したいときとか、クラス名をSpanに囲ませて渡したいとかありますよね。そんなときのやり方。調べたら本当にサイトが少なかったけど、超簡単だった。↓は太字 + クラスに"student"がついたSpanで囲んだものをHTMLに渡す場合。

[Python側]

from flask import Flaskrender_template

app = Flask(__name__)

@app.route('/')
def hello():
   return render_template('hello.html'
      title='Home'
      name='<span class=\"student\"><b>Jimmy</b></span>'
   )    
 

 

[HTML側]

<!DOCTYPE html>
<html>
    <head>
        <title>{{ title }}</title>
    </head>
    <body>
        <p> {{ name | safe }}</p>
    </body>
</html>

 

たった" | safe"をつけるだけ。公式にも書いてあった。

 

Automatic escaping is enabled, so if name contains HTML it will be escaped automatically. If you can trust a variable and you know that it will be safe HTML (for example because it came from a module that converts wiki markup to HTML) you can mark it as safe by using the Markup class or by using the |safe filter in the template. Head over to the Jinja 2 documentation for more examples.

flask.palletsprojects.com

 

やっぱ公式リファレンスは偉大ですなぁ。多分日本語がないと思うので、備忘までに残しておきます。