Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

django 1.5 - How to use variables inside static tag

People also ask

What is {% load static %} in Django?

The {% static %} template tag generates the absolute URL of static files. That's all you need to do for development. Reload http://localhost:8000/polls/ and you should see that the question links are green (Django style!) which means that your stylesheet was properly loaded.

What is static content in Django?

django. contrib. staticfiles collects static files from each of your applications (and any other places you specify) into a single location that can easily be served in production. For an introduction to the static files app and some usage examples, see How to manage static files (e.g. images, JavaScript, CSS).

What is the use of static in Django?

django. contrib. staticfiles provides a convenience management command for gathering static files in a single directory so you can serve them easily. This will copy all files from your static folders into the STATIC_ROOT directory.


You should be able to concatenate strings with the add template filter:

{% with 'assets/flags/'|add:request.LANGUAGE_CODE|add:'.gif' as image_static %}
  {% static image_static %}
{% endwith %}

What you are trying to do doesn't work with the static template tag because it takes either a string or a variable only:

{% static "myapp/css/base.css" %}
{% static variable_with_path %}
{% static "myapp/css/base.css" as admin_base_css %}
{% static variable_with_path as varname %}

For what it's worth, I think this is the easiest way:

<img src="{% static 'assets/flags/'|add:request.LANGUAGE_CODE|add:'.gif' %}" ... >

This is and old question and I'm not sure if this method could be done back then, But now, in Django 2.0 this seems to work fine for me.


a cleaner way is to set the {% static %} as a variable from the beginning of the html so we can use it in any way we want.

{% load static %}
{% static "" as baseUrl %}
<img src="{{ baseUrl }}/img/{{p.id}}"></img>

I got this to work by using an empty string for the static path and then using my variables in their own section, like this:

<a href= "{% static "" %}{{obj.a}}/{{obj.b}}/{{obj.c}}.gz" >Name</a>

@rounin, you can, at least, use

{% get_static_prefix %} 

which will be loaded when you {% load static %}. It's just more natural then {% static '' %} :)