Изображение не отображается при рендеринге шаблона на колбу с использованием светокопии - PullRequest
2 голосов
/ 20 мая 2019

Я пытаюсь использовать колбу для показа статического изображения. Это дерево проекта:

.   
├── api.py  
├── __init__.py  
├── show.py  
├── static  
│   └── test.jpg  
└── templates  
    └── show.html  

Содержание api.py:

import os
from flask import Flask
from api import show

def create_app(test_config=None):
    app = Flask(__name__, instance_relative_config=True)

    UPLOAD_FOLDER = os.path.join('static')
    app.config.from_mapping(
        SECRET_KEY='dev',
        UPLOAD_FOLDER = UPLOAD_FOLDER,
    )

    app.register_blueprint(show.bp)

    return app

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

А show.py составляет:

from flask import (Blueprint, render_template, current_app)
import os


bp = Blueprint('show', __name__, static_folder='static', template_folder='templates')

@bp.route('/show', methods=['POST'])
def show():
    image = os.path.join(current_app.config['UPLOAD_FOLDER'], 'test.jpg')

    return render_template("show.html", in_image = image)

show.html;

<!DOCTYPE html>
<html>
<head>
    <title>Show</title>
</head>
<body>
    <img src="{{ in_image }}" alt="Input Image">
</body>
</html>

А в статической папке test.jpg. При запуске приложения

export FLASK_APP=api
export FLASK_ENV=development
flask run

отображается только значок, похожий на изображение с тегом «Входное изображение». Почему фактическое изображение здесь не показывается?

1 Ответ

1 голос
/ 20 мая 2019

При попытке запустить включенное приложение я столкнулся с ошибкой импорта.Я обновил структуру файла и смог просмотреть изображение из папки static.Я изменил метод request с POST на GET в blueprints/show.py.

Структура файла:

.
├── api.py
├── blueprints
│   ├── __init__.py
│   └── show.py
├── static
│   └── penguins.png
└── templates
    └── show.html

api.py:

import os
from flask import Flask
from blueprints.show import bp

def create_app(test_config=None):
    app = Flask(__name__, instance_relative_config=True)
    UPLOAD_FOLDER = os.path.join('static')
    app.config.from_mapping(
        SECRET_KEY='dev',
        UPLOAD_FOLDER = UPLOAD_FOLDER,
    )
    app.register_blueprint(bp)
    return app

app = create_app()

blueprints/__init__.py - это пустой файл.

blueprints/show.py:

from flask import Blueprint, render_template, current_app
import os    

bp = Blueprint('show', __name__, static_folder='static',
               template_folder='templates')

@bp.route('/show')
def show():
    image = os.path.join(current_app.config['UPLOAD_FOLDER'], 'penguins.png')
    return render_template("show.html", in_image = image)

templates/show.html:

<!DOCTYPE html>
<html>
<head>
    <title>Show</title>
</head>
<body>
    <img src="{{ in_image }}" alt="Input Image">
</body>
</html>

Вывод:

flask blueprint image load

Подробнее о структурировании ресурсов чертежей можно прочитать в официальной документации по blueprint-resources .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...