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

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

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

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

Python

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

HTML

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

Q&A

解決済

1回答

1520閲覧

Flask HTML側で変数を変化させたい

sun_3

総合スコア2

Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

Python

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

HTML

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

0グッド

0クリップ

投稿2021/12/12 09:02

編集2021/12/12 11:26

前提・実現したいこと

YoutubeAPIを使い、webサイトを作りたいと思いFlaskの勉強をしています。
今のコードでは同じ情報が四回出力されるだけなのですが、変数を複数定義するとどうしてもコードが長くなり見づらく、表示させたい情報が増えたときの対応も大変になると思います。

HTMLのコード内で、for文が回るたびに変数「num」の数値を増加させるコードを書くことは可能なのか教えてほしいです。

該当のソースコード

Python

1from flask import Flask, render_template, url_for 2from googleapiclient.discovery import build 3 4app = Flask(__name__) 5DEVELOPER_KEY = "APIキー" 6YOUTUBE_API_SERVICE_NAME = "youtube" 7YOUTUBE_API_VERSION = "v3" 8youtube = build(YOUTUBE_API_SERVICE_NAME,YOUTUBE_API_VERSION,developerKey=DEVELOPER_KEY) 9 10members = "UCp6993wxpyDPHUpavwDFqgg",\ 11 "UCDqI2jOz0weumE8s7paEk6g",\ 12 "UC-hM6YJuNYVAmUWxeIr9FeA",\ 13 "UC5CwaMl1eIgY8h02uZw7u8A" 14 15num=0 16responce = youtube.channels().list(part="snippet,statistics,contentDetails",id=members[num]).execute() 17input = responce["items"][0]["snippet"]["title"] + "総視聴回数:"+responce["items"][0]["statistics"]["viewCount"] + "チャンネル登録者数:"+responce["items"][0]["statistics"]["subscriberCount"] 18 19 20@app.route('/') 21def index(): 22 return render_template('index.htm', input=input, members=members) 23 24if __name__ == "__main__": 25 app.run(debug=True)

html

1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <meta charset="UTF-8"> 5 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 6 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 7 <title>Document</title> 8 <link rel="stylesheet" href="{{ url_for('static',filename='index.css') }}"> 9</head> 10<body> 11 <header> 12 <h1>テスト</h1> 13 </header> 14 15 <main class="main"> 16 <div> 17 <ul> 18 {% for member in members %} 19 <Li>{{input}}</Li> 20 {% endfor %} 21 </ul> 22 </div> 23 </main> 24<html>

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

Python 3.9.7
Flask 1.1.2

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

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

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

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

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

attakei

2021/12/12 11:22

DEVELOPER_KEYを掲載してしまっているため、不正利用される恐れがあります。 GCP上で掲載しているキーの無効化をしたうえで、「XXXXXXXXXXXXXXXXXX」といったようなキーにならないだろう値で代用掲載をしてください。 (質問内容の編集のみでは編集履歴から追うことができるため、必ず無効化する必要があります)
sun_3

2021/12/12 11:34

ご親切ありがとうございます。そのままコピー&ペーストしてしまっていました。 お恥ずかしいです
guest

回答1

0

ベストアンサー

namespaceを使用するのが良いかと思いました。Pythonのdictのように使用できるようです。

html

1{% set ns = namespace(num=0) %} 2{% for member in members %} 3 {% set ns.num = ns.num + 1 %} 4 {{ ns.num }} 5 <Li>{{input}}</Li> 6{% endfor %}

https://jinja.palletsprojects.com/en/3.0.x/templates/#jinja-globals.namespace

投稿2021/12/12 22:58

holy_

総合スコア364

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

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

sun_3

2021/12/15 12:34

ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問