Изображение не отображается flask

Рейтинг: 0Ответов: 1Опубликовано: 04.03.2023

main.py

from flask import Flask, render_template

app = Flask(__name__)


@app.route('/table/<sex>/<years_old>')
def table(sex, years_old):
    years_old = int(years_old)
    if years_old >= 21:
        path = '../static/img/normal.png'
    else:
        path = '../static/img/young.png'

    if sex == 'male':
        color = f'rgb(0, {years_old}, {years_old + 65})'
    else:
        color = f'rgb(255, 0, {years_old})'

    return render_template('index.html', color=color, path=path)


if __name__ == '__main__':
    app.run(port=8080, host='127.0.0.1')

./templates/base.html

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css"
              rel="stylesheet" integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD"
              crossorigin="anonymous">
    </head>
    <body>
        <h1>Миссия Колонизация Марса</h1>
        <h4>И на Марсе будут яблони цвести!</h4>
        {% block content %}{% endblock %}
    </body>
</html>

./templates/index.html

{% extends "base.html" %}

{% block content %}
    <h2>Оформление каюты</h2>
    <div style="background-color:{{ color }};">
        <img src="{{ path }}">
    </div>
{% endblock %}

./static/img/normal.png https://i.sstatic.net/PDcsb.png

./static/img/young.png https://i.sstatic.net/zbNnv.jpg

По итогу работает только отображение цвета, зависящее от возраста и пола, а изображение, так же зависящее от возраста, не отображается соответствующим образом.

Ответы

▲ 0Принят

Ответ оказался прост надо было иcпользовать функцию url_for

if years_old >= 21:
    path = url_for('static', filename='img/normal.png')
else:
    path = url_for('static', filename='img/young.png')