#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 минут, и я помогу вам преодолеть разногласия. Я нахожусь между некоторыми вещами.