2017-09-01 39 views
2

我試圖讓我的媒體目錄中的文件出現在HTML模板上。我將「Tango with Django」一書作爲教程。在Django模板中使用靜態文件

這裏是我的settings.py

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

這裏是views.py

def about(request): 

    return render(request, 'rango/about.html',) 

而且我about.html模板:

<!DOCTYPE html> 
{%load staticfiles%} 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>About</title> 
</head> 
<body> 
<h1>This is the about page</h1> 
<img src="{{MEDIA_URL}} {{cat.jpg}}" 
    alt="cats are funny"/> 
<div> 
    <a href="/rango/"> Index </a> 
</div> 
</body> 
</html> 

我知道我必須失去了一些東西很明顯,但無法想象出我的生活!

回答

1

{{MEDIA_URL}}標記已被棄用。改爲使用{% get_media_prefix %}標記。

<img src="{% get_media_prefix %}cat.jpg" alt="cats are funny"/> 

從文檔:

類似於get_static_prefixget_media_prefix填充與媒體前綴MEDIA_URL模板變量。

當呈現時,該src屬性將相當於/media/cat.jpg。你可能要考慮你的settings.py使用STATIC_ROOT,而是與{% static %}標籤一起:

<img src="{% static 'cat.jpg' %}" alt="cats are funny"/> 
+0

我更換了MEDIA_URL標籤與get_media_prefix標籤,現在它的說,我沒有註冊/加載標籤。對不起,我是一個完全新手。 –

+0

@MthethewSheinberg:我已經添加了一個指向'get_media_prefix'文檔的鏈接。看起來你需要用'{%load static%}'替換'{%load staticfiles%}',因爲前者也被棄用。您可能還想驗證您正在閱讀的書籍是否在正確版本的Django中引導您;目前的版本是1.11。 [這是來自文檔的摘錄](https://docs.djangoproject.com/en/1.11/intro/install/#verifying),您可以使用它來檢查您的版本。 –

相關問題