【问题标题】:Template is giving wrong path to media directory and Django can't find the images模板提供了错误的媒体目录路径,Django 找不到图像
【发布时间】:2021-01-17 17:38:02
【问题描述】:

我有 2 个模型,它们的关系是 OneToMany。因此,一个“ivel”(葡萄牙语中的属性)有很多图片(葡萄牙语中的“fotos”或“imagens”)。

我的 Web 应用程序结构非常简单,我在设置中进行了配置:

settings.py

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'

urls.py

urlpatterns = [
    path('', index, name='index'),
    path('sobre_nos/', sobre_nos, name='sobre_nos'),
    path('', include('imoveis.urls')),
    path('admin/', admin.site.urls),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

因此,每张上传的图片都直接进入“媒体”结构,属性图像进入'media/imoveis/%Y/%m/%d'

我想使用基本的引导轮播显示与模板中的属性关联的所有图片:

imovel.html

  <div id="carouselExampleControls" class="carousel slide" data-ride="carousel">
    <div class="carousel-inner">
      {% for foto in fotos_do_imovel %}
      {% if foto.imagem %}
      <div class="carousel-item activate">
        <img class="d-block w-100" src="{{ foto.imagem }}">
      </div>
      {% else %}
       <div class="carousel-item">
         <img class="d-block w-100" src="{{ imovel.foto_principal }}">
       </div>
      {% endif %} 
    </div>
    {% endfor %}
    <a class="carousel-control-prev" href="#carouselExampleControls" role="button" data-slide="prev">
      <span class="carousel-control-prev-icon" aria-hidden="true"></span>
      <span class="sr-only">Anterior</span>
    </a>
    <a class="carousel-control-next" href="#carouselExampleControls" role="button" data-slide="next">
      <span class="carousel-control-next-icon" aria-hidden="true"></span>
      <span class="sr-only">Proxima</span>
    </a>
  </div>

问题是,当我访问imovel.html的页面时,找不到图片:

imoveis/2020/10/01/pexels-photo-1571463.jpeg
imoveis/2020/10/01/pexels-photo-1643383.jpeg
[01/Oct/2020 21:20:35] "GET /imovel/3 HTTP/1.1" 200 5952
Not Found: /imovel/imoveis/2020/10/01/pexels-photo-1643383.jpeg
Not Found: /imovel/imoveis/2020/10/01/pexels-photo-1571463.jpeg
[01/Oct/2020 21:20:35] "GET /imovel/imoveis/2020/10/01/pexels-photo-1571463.jpeg HTTP/1.1" 404 3187
[01/Oct/2020 21:20:35] "GET /imovel/imoveis/2020/10/01/pexels-photo-1643383.jpeg HTTP/1.1" 404 3187

我在视图中打印了图片路径以检查那里是否正常,并且视图正在发送正确的路径,我不知道 imovel/ 被添加到正确路径前面的位置,而且我不知道怎么解决。

(英语不是我的第一语言,所以我很抱歉有一些错误)

【问题讨论】:

    标签: python html django twitter-bootstrap bootstrap-4


    【解决方案1】:

    对于FileFieldImageField,您应该使用文件的.url attribute [Django-doc]

    &lt;img class="d-block w-100" src="{{ foto.imagem<b>.url</b> }}"&gt;

    注意:Django 生产中的静态和媒体文件提供服务。在生产中, 您将需要配置像 ApacheNginx 这样的网络服务器。 Django documentation 有关于配置网络服务器的部分。

    【讨论】:

      猜你喜欢
      • 2010-12-30
      • 2012-08-26
      • 2018-08-22
      • 1970-01-01
      • 2021-03-09
      • 2018-06-16
      • 2018-01-16
      • 2012-07-18
      • 2015-06-25
      相关资源
      最近更新 更多