Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.2k views
in Technique[技术] by (71.8m points)

django - Access STATIC_URL from within a custom inclusion template tag

I have created a custom inclusion template tag that accepts a single Update model object.

Template tag:

@register.inclusion_tag('update_line.html')
def update_line(update):
    return {'update': update}

update_line.html:

<tr><td class="update">{{ update }}</td><td class="ack">
<img id="update-{{ update.pk }}" class="ack-img" src="{{ STATIC_URL }}img/acknowledge.png" alt="Acknowledge" /></td></tr>

The problem is that {{ STATIC_URL }} is not available in my inclusion template tag template, even though I am using the django.core.context_processors.static context processor so {{ STATIC_URL }} is available to all of my 'normal' templates that aren't being processed through an inclusion template tag.

Is there a way I can get the STATIC_URL from within my inclusion template tag template without doing something nasty like manually getting it from settings and explicitly passing it as a context variable?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Okay. Just figured this out after posting the question:

Instead of using {{ STATIC_URL }} in my inclusion template, I use the get_static_prefix tag from the static template tags:

update_line.html:

{% load static %}

<tr><td class="update">{{ update }}</td><td class="ack">
<img id="update-{{ update.pk }}" class="ack-img" src="{% get_static_prefix %}img/acknowledge.png" alt="Acknowledge" /></td></tr>

Update

I believe the correct way to do this now (django 1.5+) is:

update_line.html:

{% load staticfiles %}

<tr><td class="update">{{ update }}</td><td class="ack">
<img id="update-{{ update.pk }}" class="ack-img" src="{% static 'my_app/img/acknowledge.png' %}" alt="Acknowledge" /></td></tr>

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...