渲染上的 Flask 图像不显示

问题描述 投票:0回答:1

我有一个渲染 Flask 应用程序,我使用渲染永久磁盘 (/var/static/uploads) 来存储上传的图像,图像已上传,但我在 html 模板上渲染它们时遇到问题。

def save_image(image_data):
   
    filename = generate_unique_filename(image_data.filename)
    
    static_uploads_folder = os.path.join('/var/static/uploads')
   
    image_data.save(os.path.join(static_uploads_folder, filename))
   
    return filename


def generate_unique_filename(original_filename):
    filename, extension = os.path.splitext(original_filename)
    timestamp = datetime.utcnow().strftime('%Y%m%d%H%M%S')
    unique_filename = f"{secure_filename(filename)}_{timestamp}{extension}"
    return unique_filename

模板

  <div class="row row-cols-2 row-cols-sm-2 row-cols-md-3 row-cols-lg-4">
      {% for product in products %}
      <div class="col">
          <div class="card product-card border-0">
              <div class="magnifier position-relative overflow-hidden">
                  {% if product.cover_image %}
                  <img src="/static/uploads/{{ product.cover_image }}" class="card-img-top product-image" alt="{{ product.name }}">
                  {% else %}
                  <img src="/static/path_to_default_image.jpg" class="card-img-top product-image" alt="{{ product.name }}">
                  {% endif %}
              </div>

              <div class="card-body text-center">
                  <h6 class="card-title text-primary mb-2">{{ product.brand }}</h6>
                  <p class="card-text text-muted fs-6 mb-3">{{ product.description | truncate(120) }}</p>
                  <p class="card-text fs-6 mb-2"><strong>Ksh {{ product.unit_price }} </strong></p>

                  <!-- Add to Cart Button -->
                  <button type="button" class="btn btn-success btn-sm fs-6" data-bs-toggle="modal" data-bs-target="#addToCartModal{{ product.id }}">
                       Buy
                  </button>
              </div>
          </div>
      </div>
      {% endfor %}
  </div>

           

我还配置了静态文件夹我不知道做错了什么

 app.static_folder = '/var/static/uploads'

我创建了静态文件夹并将图像上传到永久磁盘 /var/static/uploads 成功,现在我在检索图像时遇到问题。

render@srv-cnn0go8cmk4c73ak6cf0-0:~/project/src$ cd /
render@srv-cnn0go8cmk4c73ak6cf0-0:/$ ls var/static/uploads
1000213051_20240429222907.png                   PhotoRoom-20240123_105100_5_20240429214709.png
1000216424_20240429211503.jpg                   PhotoRoom-20240123_105100_6_20240429214709.png
1000216434_20240429211503.jpg                   PhotoRoom-20240123_105100_7_20240429214709.png
1000216446_20240429211503.jpg                   PhotoRoom-20240123_105101_9_20240429222907.png
1000217105_20240429211503.jpg                   PhotoRoom-20240123_105102_10_20240429222907.png
PhotoRoom-20240112_080418_20240429224147.png    PhotoRoom-20240123_114305_3_20240429223934.png
PhotoRoom-20240114_081108_20240429224147.png    PhotoRoom-20240312_191315_20240429223357.png
PhotoRoom-20240114_082716_20240429224147.png    PhotoRoom-20240312_192344_1_20240429223357.png
PhotoRoom-20240114_104057_2_20240429223934.png  PhotoRoom-20240312_192344_3_20240429223635.png
PhotoRoom-20240123_105059_2_20240429214709.png
python html flask flask-sqlalchemy render.com
1个回答
0
投票

您的模板调用

<img src="/static/uploads/{{ product.cover_image }}"
,而您的静态文件夹定义为
app.static_folder = '/var/static/uploads'
。 考虑使用
src="{{ url_for('static', filename=filename) }}"
看看情况是否有所改善。确保在您的
from flask import url_for
 中添加 
views.py

© www.soinside.com 2019 - 2024. All rights reserved.