2009-05-12 18 views
6

Jedną z rzeczy, które często robię, jest przekazywanie literałów łańcuchowych jako parametrów do znaczników lub funkcji szablonu; na przykład:Używanie literałów łańcuchowych jako parametrów do szablonów w szablonach Django

{% url my-url 'my_param' %} 

Niestety, silnik szablon django nie pozwala tego zrobić. Więc ja znajduję się robi to dużo w moim kodu Widok:

my_context_dict['MY_PARAM'] = 'my_param' 

, a następnie w moim kodu Widok:

{% url my-url MY_PARAM %} 

lub tworząc serię odwzorowań adresów URL, które ja osobiście staram się unikać.

Czy można stosować literał ciągu w szablonach Django? A może bardziej eleganckie rozwiązanie? Nie widziałem niczego tutaj ani w dokumentacji.

Odpowiedz

12

Ten czuje się źle, ale ma rację.

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

zagnieżdżonego "" „s nie wydają się jak powinien działać. Oni robią. Materiał Django {% %} jest po prostu wyciągany z HTML bez względu na otaczający kontekst. Tak więc "zduplikowane" " nie są w rzeczywistości duplikowane.

+0

Jakie zmiany są wymagane w url.py urlpatterns? – jencko

12

użyć cudzysłowów zamiast apostrofami:

{% url my_view "my_param" %} 
1

Bardzo wierd - Mam projekt django, który używa pojedynczych cudzysłowów do przekazania wartości ciągu i działa dobrze.

<a href="{% url categories 'vendor' %}"</a> 
<a href="{% url categories 'crew' %}"</a> 

W sprawie dalszego dochodzenia okazuje się, że jest to this has changed in django 1.5. Teraz wymaga cytatów nawet wokół nazwy wzorca URL.

Powiązane problemy