[英]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/
添加到正確路徑前面的位置,我也不知道如何修復它。
(英語不是我的第一語言,所以我很抱歉一些錯誤)
對於FileField
或ImageField
,您應該使用文件的.url
屬性 [Django-doc] :
<img class="d-block w-100" src="{{ foto.imagem.url }}">
注:Django不服務靜態和媒體文件的制作。 在生產環境中,你需要配置一個像Apache或Nginx這樣的網絡服務器。 Django 文檔中有關於配置網絡服務器的部分。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.