Использование flask для отображения части словаря python в HTML-файле

#python #html #flask

#python #HTML #flask

Вопрос:

Я следую руководству о том, как использовать Flask и render_template отображать значение из моего словаря pinDict в HTML-файле. Когда я перехожу к http://127.0.0.1:5000/21/on , появляется только «Привет». Почему это так?

 #app.py
from flask import Flask, render_template

app = Flask(__name__)
pinDict = {"21": {"name": "GPIO 21", "state": "off"}}

@app.route('/')
def index():
    return "hey"

@app.route("/<changePin>/<action>")
def turnOn(changePin, action):
    return render_template("home.html", **pinDict)

if __name__ == '__main__':
    app.run(debug=True, host="0.0.0.0")
  

Мой home.html файл — это:

 <!DOCTYPE html>
<html>
    <body id = "myButton">
    <h1>RPi Web Server</h1>
    {% for pin in pinDict %}
    <h2> {{pinDict[pin]["name"]}} </h2>
    {% endfor %}
    <script>
        function printLog() {
            var myHTML = "<h1> Hi </h1>"
            document.getElementById("myButton").innerHTML = myHTML;
        }
    </script>
    <script>printLog()</script>
    </body>
</html>
  

Довольно просто. Немного смущает, почему он не отображается, поскольку это в значительной степени тот же код из руководства, которому я следовал. Был бы признателен за помощь, спасибо за ваше время.

Комментарии:

1. Попробуйте return render_template("home.html", pinDict=pinDict)

2. Отлично, я добавлю его в качестве ответа

Ответ №1:

Вам лучше использовать

 return render_template("home.html", pinDict=pinDict)
  

вместо

 return render_template("home.html", **pinDict)