Рендеринг изображения в HTML-шаблон с использованием SQLAlchemy - PullRequest
0 голосов
/ 17 февраля 2019

Я пытаюсь отобразить изображение на своей странице.Я сохранил локальный URL-адрес изображения в своей базе данных, чтобы, таким образом, получить этот URL-адрес в своем HTML-файле и отобразить изображение.Но происходит то, что изображение не отображается.

Я открыл HTML-файл один, и изображение было успешно обработано, но при выполнении этого в коде Python и запуске сервера изображение проблематично.

Это один из примеров объявления базы данных (код Python)

cable1 = SectionItem(
name='Remax',
price='$3.99',
description='AUX Metal Cable - 3.5mm - 100Cm Male To Male',
image_url='img/cables/cable1.jpg',
category=cables
)

Это отлично работает.

ЭтоSQLAlechemy для рендеринга изображения

from flask import Flask, render_template, request, redirect, url_for,
flash
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from database import Base
from database import Accessory, AccessorySection, SectionItem

app = Flask(__name__)

engine = create_engine('sqlite:///mobilystore.db')
Base.metadata.bind = engine
DBSession = sessionmaker(bind=engine)
session = DBSession()


@app.route('/')
@app.route('/mobily')
def mobilystore():
    all_cables = session.query(SectionItem).filter(
        SectionItem.store_id == 1).all()
    return render_template(
        'mainpage.html', all_cables=all_cables)


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

Сервер также работает в терминале без проблем.

Это HTML-документ в папке моих шаблонов

<html>
    <body>
        <h1>Mobily Store</h1>
    </br>  
        {% for i in all_cables %}
        <div>
            <img src="{{i.image_url}}" alt="cable img">
            <p> {{i.description}} </p>
            <p> {{i.price}} </p>
    </br>
        </div>
        {%endfor%}

    </body>
</html>

цена и описание отображаются, но изображение нет.

Обратите внимание, что я помещаю изображения в папку img внутри папки шаблонов (там же находится мой HTML-файл).

это my-project на github, чтобы дать вам полное представление

1 Ответ

0 голосов
/ 17 февраля 2019

Вы должны переместить папку templates/img в static/img и в шаблоне распечатать путь к изображению с помощью функции url_for:

<img src="{{ url_for('static', filename=i.image_url) }}" alt="cable img">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...