Как мне встроить тег в url templatetag в шаблоне django?
Django 1.0, Python 2.5.2
В views.py
def home_page_view(request):
NUP = {"HOMEPAGE": "named-url-pattern-string-for-my-home-page-view"}
variables = RequestContext(request, {'NUP':NUP})
return render_to_response('home_page.html', variables)
В home_page.html следующие
NUP.HOMEPAGE = {{ NUP.HOMEPAGE }}
отображается как
NUP.HOMEPAGE = named-url-pattern-string-for-my-home-page-view
и следующий URL-адрес с именем pattern работает (как и ожидалось),
url template tag for NUP.HOMEPAGE = {% url named-url-pattern-string-for-my-home-page-view %}
и отображается как
url template tag for NUP.HOMEPAGE = /myhomepage/
но когда {{ NUP.HOMEPAGE }} встроен в {% url ... %} следующим образом
url template tag for NUP.HOMEPAGE = {% url {{ NUP.HOMEPAGE }} %}
это приводит к синтаксической ошибке шаблона
TemplateSyntaxError at /myhomepage/
Could not parse the remainder: '}}' from '}}'
Request Method: GET
Request URL: http://localhost:8000/myhomepage/
Exception Type: TemplateSyntaxError
Exception Value:
Could not parse the remainder: '}}' from '}}'
Exception Location: C:\Python25\Lib\site-packages\django\template\__init__.py in __init__, line 529
Python Executable: C:\Python25\python.exe
Python Version: 2.5.2
Я ожидал, что {% url {{ NUP.HOMEPAGE }} %} перейдет в {% url named-url-pattern-string-for-my-home-page-view %} во время выполнения и будет отображаться как /myhomepage/.
Встроенные теги не поддерживаются в django?
Можно ли написать собственный тег шаблона URL со встроенной поддержкой тегов, чтобы это работало?
{% url {{ NUP.HOMEPAGE }} %}






Это кажется слишком динамичным. Ты должен делать
{% url named-url-pattern-string-for-my-home-page-view %}
И оставим все как есть. Честно говоря, динамическое заполнение имени тега URL немного странно.
Если вы хотите использовать любой из большого количества различных тегов URL, вам нужно будет сделать что-то вроде этого
{% if tagoption1 %}<a href = "{% url named-url-1 %}">Text</a>{% endif %}
Это кажется многословным, потому что, опять же, динамичная вещь, которую вы пытаетесь достичь, кажется немного странной.
Если у вас есть что-то вроде «семейств» или «кластеров» страниц, возможно, отдельные каталоги шаблонов будут способом лучше управлять этим. Каждый из кластеров страниц может наследовать от базовых шаблонов и переопределять такие мелочи, как эта функция навигации, чтобы все страницы в кластере выглядели одинаково, но имели одно отличие навигации для «локального дома».
Может быть, вы могли бы вместо этого попробовать передать конечный URL-адрес в шаблон?
Что-то вроде этого:
from django.core.urlresolvers import reverse
def home_page_view(request):
NUP = {"HOMEPAGE": reverse('named-url-pattern-string-for-my-home-page-view')}
variables = RequestContext(request, {'NUP':NUP})
return render_to_response('home_page.html', variables)
Затем в шаблоне NUP.HOMEPAGE должен указать сам URL.
Отправил ошибку в Django. Они должны уметь исправить это на своей стороне.
Если вы нажмете на время, показанное рядом с «отредактировано» (например, «30 минут назад»), вы получите красивую цветную разницу.