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

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

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

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

Python

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

Q&A

解決済

2回答

3087閲覧

Djangoテンプレート内で、変数とそれに関係する、if文を使いたい

tomaa

総合スコア84

Django

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

Python

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

0グッド

0クリップ

投稿2020/03/26 09:18

編集2020/03/26 10:19

前提・実現したいこと

Python,DjangoでWEBシステムを開発しています。

テンプレートの中で、変数とif文を利用して、条件判定とそれに応じた表示の切り替えを行いたいのですが、どのようなコードにすれば良いのかわかりません。

解決に向けて、ご教授いただけないでしょうか?

テンプレートコードのイメージ

html

1 2{% score = get_score kokugo sansu eigo %} 3 4{% if score > 80 %} 5<p>合格です</p> 6{% else %} 7<p>不合格です</p> 8{% endif %} 9

python

1@register.simple_tag 2def get_score(kokugo, sansu, eigo): 3 total_score = kokugo + sansu + eigo 4 return total_score

試したこと

Djangoのドキュメントで方法を探ってみたのですが、期待する動きができません。

カスタムタグを利用して、テンプレート内で数字を取得し、それをif文で使いたいのですが、djangoのルールでは、このような動かし方は、できないでしょうか?

get_context_dataを使用する方法での対応でないとできないでしょうか?

補足情報(FW/ツールのバージョンなど)

●開発環境

  • Python: 3.7.5
  • Django: 2.2.2

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

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

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

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

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

guest

回答2

0

ベストアンサー

{% get_score kokugo sansu eigo as score %}

でいけませんか。

https://docs.djangoproject.com/ja/3.0/howto/custom-template-tags/#s-inclusion-tags
のちょっと上

It's possible to store the tag results in a template variable rather than directly outputting it. This is done by using the as argument followed by the variable name. Doing so enables you to output the content yourself where you see fit:

投稿2020/03/26 10:19

quickquip

総合スコア11029

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

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

tomaa

2020/03/26 10:26

教えていただいた方法でうまくいきました。 変数にとってから、 {% if score > 80 %} で、if文の判定にも使えました。 ありがとうございます。
guest

0

python

1{% with score = get_score kokugo sansu eigo %} 23{% endwith %}

withを入れるとどうでしょう

投稿2020/03/26 10:06

編集2020/03/26 10:21
netsuy

総合スコア170

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

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

tomaa

2020/03/26 10:14

ご回答ありがとうございます。 まず変数として取得できているか調べるために、 {% with score = get_score kokugo sansu eigo %} <p>{{ score }}</p> or <p>{% score %}</p> を試しましたが、以下のエラーとなります。 django.template.exceptions.TemplateSyntaxError: 'with' expected at least one variable assignment
tomaa

2020/03/26 10:32

{% with score = get_score kokugo sansu eigo %} <p>{{ score }}</p> or <p>{% score %}</p> {% endwith %} のパターンでも試しましたが、同じエラーとなりました。
tomaa

2020/03/26 10:34

上の回答者さんの方法で、解決できたため、ベストアンサーにさせてもらいましたが、netsuyさんの回答も参考になりました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問