どのような処理をしているのかわかりませんが、やりたいことのニュアンス的に以下の様な感じじゃないでしょうか?
python
1from flask import Flask, render_template
2
3app = Flask(__name__)
4
5
6@app.route('/')
7def index():
8 langs = [
9 {"display": "ドイツ語", "code": "de"},
10 {"display": "英語", "code": "en"},
11 {"display": "スペイン語", "code": "es"},
12 {"display": "フランス語", "code": "fr"},
13 {"display": "イタリア語", "code": "it"},
14 {"display": "ポルトガル語", "code": "pt"},
15 {"display": "日本語", "code": "ja", "selected": True},
16 {"display": "韓国語", "code": "ko"},
17 {"display": "ヒンディー語", "code": "hi"}
18 ]
19
20 return render_template('index.html', langs=langs)
21
22
23if __name__ == '__main__':
24 app.run()
25
html
1<!DOCTYPE html>
2<html lang="ja">
3<head>
4 <meta charset="UTF-8">
5 <title>おためし</title>
6</head>
7<body>
8<select name="name">
9 {% for lang in langs %}
10 {% if lang.selected %}
11 <option value="{{ lang.code }}" selected> {{ lang.display }}</option>
12 {% else %}
13 <option value="{{ lang.code }}"> {{ lang.display }}</option>
14 {% endif %}
15 {% endfor %}
16</select>
17</body>
18</html>
selectedを追加しても一番最後の要素が自動で初期値になるだけで困っています。
selectedをなんとなく質問文のHTMLに書いても、全てにselectedが付いて、最後に見つけたselectedが選択されているって事になるだけじゃないですかね。
画面遷移が発生したりして選択言語が変わる場合も、似たような感じでどれが選択されているのかを渡せばやりたいことができると思います。