Колба Python не отображает содержимое с помощью render_template()

#python #html #flask

Вопрос:

Когда я пытаюсь запустить свою программу Flask, все, что я вижу, — это цвет фона. При входе localhost:5000/index в браузер содержимое HTML не отображается.

Моя структура папок выглядит следующим образом:

Колба

—Test.py

—статика

——стили

———main.css

—шаблоны

——base.html

——home.html

пикаш

Коды приведены ниже:

Test.py

 from flask import Flask
from flask import render_template
from datetime import datetime

app = Flask(__name__)

@app.route("/")
@app.route("/home/")
def home(name):
    return render_template("home.html", name=name)

if __name__ == "__main__":
    app.run(debug=True)
 

home.html:

 <!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>{{ name }}</title>
    <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='styles/main.css') }}">
  </head>
  <body>
    <div id="container">
      <!-- Jinja directives: page contents will go between them -->
      {% block content %}
      {% endblock %}
    </div>
  </body>
</html>
 

home.html

 {% extends 'base.html' %}
{% block body %}

<h1>{{ name }}</h1>

{% endblock %}
 

main.css

 body {
    font-family: 'Source Sans Pro', sans-serif;
    font-size: 100%;
    color: #000;
    background: #407189;
    margin: 0;
}

#container {
    margin: 2em auto;
    width: 740px;
    padding: 2em 4em;
    background: #f1f7dc;
}

h1, h2 {
    font-family: 'Droid Serif', serif;
    font-size: 3em;
    margin: 0;
                padding-bottom: 1em;
}

h2 {
    font-size: 2em;
}

p {
    font-size: 1.4em;
}

@media (max-width: 800px) {
    body {
        background: #f1f7dc;
    }
    #container {
        margin: 0;
        width: 100%;
        padding: 2em;
    }
}
 

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

1. Вы просто должны сказать http://localhost:5000/index/ , а не http://localhost:5000/index потому, что это маршрут, который не реализован. В качестве альтернативы вы можете позвонить http://localhost:5000/

2. @Shiv использование просто localhost:5000 ничего не отображает

3. У вас есть два определенных маршрута, один из которых » / » таким образом http://localhost:5000/ или http://localhost:5000/index/ будет работать. Я не вижу причин, почему это не сработает.

4. Я пробовал использовать и то, и другое, а также http://127.0.0.1:5000/ . Это просто пустой экран, который я вижу

Ответ №1:

В base.html изменить {% block content %} на {% block body %}

     <div id="container">
      <!-- Jinja directives: page contents will go between them -->
      {% block body %}
      {% endblock %}
    </div>
 

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

1. Я просто попытался внести это изменение. Я нажал CTRL C в терминале, а затем выполнил команды set FLASK_APP=Test.py , а затем flask run . Являются ли это неправильными способами сделать это? Потому что я все еще вижу пустой экран при перезагрузке страницы

2. Вам просто нужно сделать python Test.py это в терминале, чтобы запустить его. Это работает на меня.

3. Просто попробовал сделать python Test.py , а затем загрузить localhost:5000 из Firefox и Chrome. Оба по-прежнему пусты. Я добавил в код свой основной файл.css. Есть ли в этом какие-то проблемы?

4. Поскольку вы используете папку с шаблонами, не могли бы вы изменить это — app = Flask(__name__, template_folder="templates", static_folder='static') я не уверен, почему вы столкнулись с проблемой, поскольку я могу просматривать страницу.

5. Дайте мне 10 минут, и я помогу вам преодолеть разногласия. Я нахожусь между некоторыми вещами.