簡體   English   中英

模板提供了錯誤的媒體目錄路徑,Django 找不到圖像

[英]Template is giving wrong path to media directory and Django can't find the images

我有 2 個模型,它們的關系是 OneToMany。 因此,一個“imovel”(葡萄牙語到財產的詞)有許多圖片(葡萄牙語中的“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' 結構,屬性圖像轉到'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/添加到正確路徑前面的位置,我也不知道如何修復它。

(英語不是我的第一語言,所以我很抱歉一些錯誤)

對於FileFieldImageField ,您應該使用文件的.url屬性 [Django-doc]

<img class="d-block w-100" src="{{ foto.imagem.url }}">

:Django服務靜態和媒體文件的制作 在生產環境中,你需要配置一個像ApacheNginx這樣的網絡服務器。 Django 文檔中有關於配置網絡服務器的部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM