質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

5167閲覧

mark_safeの用途

退会済みユーザー

退会済みユーザー

総合スコア0

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2017/08/11 15:37

mark_safeの用途がよくわかりません。チュートリアルを見ながらWEBサイトを作っています。

from django.shortcuts import render from django.utils.html import mark_safe from django.http import HttpResponse # Create your views here. def index(request): return render(request,'polls/index.html',{ 'hoge':'test string', 'fuga':'<br>tag</br>', 'piyo': mark_safe('<br>tag</br>'), })

とコードを書いて実行すると
イメージ説明
と表示されました。
'fuga'では<br>タグが表示されるのに、'piyo'では<br>タグが表示されません。この、mark_safeをつけるとき<br>タグが表示されないことに意味があるのでしょうか?mark_safeはセキュリティのためにあるそうなのですが、タグが攻撃に狙われるということでしょうか?だったら、web上に公開するなら'fuga'にもmark_safeをつけるべきなのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

'fuga'では<br>タグが表示されるのに、'piyo'では<br>タグが表示されません。

正確には、'piyo'では<br>タグがhtmlとしてちゃんと解釈され、画面に表示されなかった、ということになります。
'fuga'の<br>はエスケープされているので、htmlとしては解釈されず、文字としてそのまま表示された、ということです。
表示されたページで、htmlのソースを表示してみると分かりやすいです。

Djangoではtemplateに渡した文字列にhtmlタグがあった場合、自動でエスケープされるようになっていますが、mark_safeをつけることで、htmlタグはそのままhtmlタグとして表示されます。
views.py等でhtmlタグを含んだ文字列を作成したい場合には、mark_safeを使うことになります。

投稿2017/08/11 19:07

toritoritorina

総合スコア972

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問