Получение URL на языке шаблонов Django - PullRequest
1 голос
/ 16 июня 2010

В шаблоне Django, как я могу ссылаться на URL. Я хочу использовать его на статических страницах, чтобы не иметь живых ссылок на текущую страницу. Есть ли способ сделать это с помощью языка шаблонов Django, или я должен использовать JavaScript, чтобы сделать это?

Я хотел бы сделать что-то вроде

{% if current_url == "/about/" %}
About
{% else %}
<a href='/about/'>About</a>
{% endif %}

Я использую его для простого блога, поэтому для этих страниц не написано ни одного представления.

Ответы [ 3 ]

3 голосов
/ 16 июня 2010

Полагаю, что, ссылаясь на «статические страницы», вы имеете в виду общие представления. Внутренне они используют RequestContext, поэтому у вас есть доступ к объекту request, который является текущим HttpRequest. Таким образом, вы можете получить доступ к текущему URL с помощью request.path.

{% if request.path == '/about/' %}
...
{% endif %}

Обратите внимание, что этот синтаксис if предназначен только для Django 1.2+ - если вы используете более старую версию, вы должны сделать:

{% ifequal request.path '/about/' %}
...
{% endifequal %}
1 голос
/ 16 июня 2010

вместо current_url в приведенном выше примере вы можете заменить request.path (при условии, что в игре django.core.context_processors.request).И это должно быть ==, а не =: o)

0 голосов
/ 18 июня 2010

Я думаю, что вы можете сделать это простым наследованием шаблонов:

# base.html
{% block contactlink %}<a href='/contact/'>Contact</a>{% endblock %}
{% block aboutlink %}<a href='/about/'>About</a>{% endblock %}
  ...

# about.html
{% block aboutlink %}About{% endblock %}

# contact.html
{% block contactlink %}Contact{% endblock %}

Конечно, это работает, только если у вас есть отдельный шаблон для каждой страницы, но я предполагаю, что вы делаете это, так как вы сказали, что страницы статичны. Знание большего о том, какие представления вы используете (при условии, что общий вид direct_to_template или аналогичный) и ваш urls.py помогут.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...