Путь чтения в шаблонах

Есть ли способ прочитать путь к текущей странице? Например, я на www.example.com/foo/bar/- и я хочу прочитать '/foo/bar/'. Я должен сделать это в файле шаблона без изменения представлений, и у меня слишком много файлов для редактирования, чтобы редактировать их.

Приветствия.

Ответ 1

С включенным контекстным процессором request вы можете использовать {{ request.path }} для получения URL-адреса во всех ваших шаблонах.

Ответ 2

Если вы добавите django.core.context_processors.request в свой параметр TEMPLATE_CONTEXT_PROCESSORS, он добавит переменную request к каждому рендерингу шаблонов, который использует RequestContext (который является большинством встроенных). Это объект HTTPRequest для текущего запроса, атрибут path которого является запрошенным путем. Более подробную информацию можно найти в документах.

Ответ 3

Я закончил тем, что использовал это, но столкнулся с маленькой икотой по пути. Вот мой путь решения в надежде, что я кого-нибудь еще кого-нибудь кого-нибудь спасу.

Сначала я добавил эту строку в файл settings.py:

TEMPLATE_CONTEXT_PROCESSORS = ("django.core.context_processors.request",)

Я обнаружил, что это позволило мне получить доступ к пути запроса из шаблона, который был передан RequestContext, с использованием переменной шаблона {{ request.path }}. Однако он также отключил все другие процессоры контекста. Чтобы исправить это, я попытался добавить значения по умолчанию в кортеж TEMPLATE_CONTEXT_PROCESSORS. Сначала это не удалось, потому что я использовал контекстные процессоры для Django 1.2 (у меня установлен Django 1.1). После исправления этой проблемы у меня остался следующий файл настроек:

TEMPLATE_CONTEXT_PROCESSORS = ("django.core.context_processors.auth",
 "django.core.context_processors.debug",
 "django.core.context_processors.i18n",
 "django.core.context_processors.media",
 "django.core.context_processors.request",
 )