Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using string literals as parameters to template tags in Django templates

One of the things I find myself doing often is passing string literals as parameters to template tags or functions; for instance:

{% url my-url 'my_param' %}

Unfortunately, the django template engine doesn't let you do this. So I find myself doing this a lot in my view code:

my_context_dict['MY_PARAM'] = 'my_param'

and then in my view code:

{% url my-url MY_PARAM %}

Or creating a series of URL mappings, which I personally try to avoid.

Is it possible to use a string literal in Django templates? Or possibly a more elegant solution? I haven't seen anything on here or in the documentation.

like image 651
pjbeardsley Avatar asked May 12 '09 19:05

pjbeardsley


2 Answers

This feels wrong but is right.

<a href="{% url someting "param1" "param2" %}">text</a>

The nested ""'s don't seem like they should work. They do. The Django {% %} material is simply pulled out of the HTML without regard for surrounding context. So the "duplicated" "'s aren't really duplicated at all.

like image 87
S.Lott Avatar answered Sep 18 '22 15:09

S.Lott


Use double quotes instead of single quotes:

{% url my_view "my_param" %}
like image 45
Ayman Hourieh Avatar answered Sep 20 '22 15:09

Ayman Hourieh