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

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

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

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

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

1869閲覧

Djangoのhtmlファイルで辞書型の値が取得できない

african

総合スコア17

Django

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

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2021/05/30 09:12

編集2021/05/30 10:27

pythonのDjangoについて質問です。

辞書型の変数をtemplate内で表示する方法がうまくいきません。

models.py
class Task(models.Model):
STATUS_CHOICES = [(1, '未選択'),(2, '選択'),(3, '実行')]
status = models.IntegerField(choices=STATUS_CHOICES, default=1)

views.py
tasks = Task.objects.all()

index.html

{% for task in tasks %}

{{STATUS_CHOICES.task.status}}
{% endfor %}

実現したい動作としては、
task毎の辞書型のkeyを取得して、その値を表示したいと考えています。

どこが間違っているでしょうか?

追加:
実現したい動作について詳しくご説明いたしますと、
例えば、html上で、タスク管理アプリのようなものを想定してまして、

実際にはmodels.pyに
title = CharField(max_length=200)
が入っていて、
例えばなのですが、これをhtml上でfor文で繰り返そうとすると
{% for task in tasks %}

{{task.title}}
{% endfor %}

のようにするとtasksからtaskにどんどんfor文で代入されていって、titleフィールドが一覧表示されていくのと同じかんじで、
今回も、taskのstatusフィールドのKey(1なのか、2なのか、3なのか)を取得して
「1ならその値である未選択、2なら選択、3なら実行」と、html上には文字列だけつまり未選択か選択か実行かだけを表示させたいです。

html表示イメージ
(1,2,3は各Recordのイメージで表示は考えてないです)
1 未選択
2 選択
3 選択

追記で試してみたことなのですが、
view.pyの中に
z = Task.STATUS_CHOICES
と書いて、render()してあげて、html上で{{z}}とすると
[(1, '未選択'),(2, '選択'),(3, '実行')]と表示されてしまいます。
ここから、{{z.2}}と例えばしてあげると、
(3, '実行')
が表示されました。
ここから、{{z.2.3}}としてみても、「実行」が表示されず何も表示されません・・
長くなりましたが、
実現したいこととしては、これをfor文の中で実現したいです。

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

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

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

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

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

attakei

2021/05/30 09:42

「辞書型の変数」というのがコード内にないため、ちょっと状況がわかりそうでわからないのですが > task毎の辞書型のkeyを取得して、その値を表示したいと考えています。 ここの部分について、ブラウザ上で「どうなってほしいか」を質問文に追記してみて欲しいです。
african

2021/05/30 10:39

この度は、質問にお答えいただきありがとうございます。 質問内容を追記させていただきました。
guest

回答2

0

ベストアンサー

taskのstatusフィールドのKey(1なのか、2なのか、3なのか)を取得して

「1ならその値である未選択、2なら選択、3なら実行」と、html上には文字列だけつまり未選択か選択か実行かだけを表示させたいです。

だと、get_FOO_displayメソッドがあるのでそれが使えるかと思います。
Djangoドキュメント

tasksのループ内で、statusの値に応じて文字列側だけ出力するなら、おそらくこんな感じです。

{% for task in tasks %} {{task.title}} / {{task.get_status_display }} {% endfor %}

(表示確認の参考用にtitleも出力するようになっています)

投稿2021/05/30 11:15

編集2021/05/30 11:34
attakei

総合スコア2738

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

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

african

2021/05/30 11:29

ご回答いただきありがとうございます。 無事に、実現したい動作ができました! ありがとうございました。
guest

0

こんばんは。

問題文読ませていただきました。

恐らく、STATUS_CHOICESはリスト型の中にタプル型でデータ格納されていますね。

djangoに疎いので、勘になってしまって申し訳ないのですが、

python

1{% for task in tasks %} 2 {{ task.0 }} 3{% endfor %}

もしくは、

python

1{% for task in tasks %} 2 {{ task[0] }} 3{% endfor %}

あたりで表示されたりしませんか?ご確認のほど、よろしくお願いいたします。????‍♂️

以下参考記事になります。
Django Template(テンプレート) for文 使い方 リスト、タプル、辞書

投稿2021/05/30 11:07

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

african

2021/05/30 11:32

ご回答いただきありがとうございます。 試してみたのですが、うまく動作しませんでした。 別の方のご回答も参考にさせていただいて、displayメソッドを使ってみると、無事に実現したい動作ができました! この度は、貴重なお時間ご回答いただきありがとうございました。 また、機会がありましたらよろしくお願いします。m(__)m
退会済みユーザー

退会済みユーザー

2021/05/30 21:31

お、自己解決ナイスです。 いえいえ。 また困ったこととかありましたら、気軽にご相談ください。????‍♂️
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問