2013-07-17 52 views
0

這是一個非常簡單的問題,如果需要解決問題,我將詳細說明。在Django的分頁中不能使用{{MEDIA_URL}}?

我試圖以顯示在一個關於我們的Django簡單頁面的圖像使用一個簡單的調用{{ MEDIA_URL }},但它似乎簡單頁面被忽略的事實,這是一個Django變量,簡單地把{{MEDIA_URL}}爲文本?

我提供了:<img src="{{ MEDIA_URL }}images/static/Deb-and-Diana-About-Us.jpg" alt="Deb &amp; Diana Portrait" width="300" height="384" align="left">但是當渲染模板時,它不會在應該添加MEDIA_URL的地方添加它,它只會留下{{ MEDIA_URL }}這兩個字。

我是否缺少導入或其他?管理flatpage的default.html擴展了我通常的模板,所以我沒有理由認爲這會失敗,除非我不明白哪些頁面可以訪問?

+0

可能重複的[擴展Django的頁面接受模板標籤](http://stackoverflow.com/questions/3066270/extending-django-flatpages-to-accept-template-tags) –

+0

@AamirAdnan這個問題沒有什麼與你標記爲重複的東西做.. – karthikr

+0

@ karthikr如何? MEDIA_URL和其他模板標籤或上下文有什麼區別? –

回答

3

您可以通過模板標籤在平面頁上訪問MEDIA_URLLook at this snippet 它搜索{{ MEDIA_URL }}並將其替換爲在您的設置中找到的。

from django import template 
from django.conf import settings 
from django.template.defaultfilters import stringfilter 

register = template.Library() 

@register.filter 
@stringfilter 
def media_url(value): 
    """Searches for {{ MEDIA_URL }} and replaces it with the MEDIA_URL from settings.py""" 
    return value.replace('{{ MEDIA_URL }}', settings.MEDIA_URL) 
media_url.is_safe = True 

和使用:

{% load media_url %} 
{{ flatpage.content|media_url }} 

要設置,在您的INSTALLED_APPS的一個上面的代碼放到一個名爲media_url.py文件在您templatetags目錄中,和過濾器添加到您的flatpages喜歡的模板所以

+0

這是一個完美的,簡單的解決方案來解決一個需要解決的問題。感謝一大堆karthikr! – fildred13