Ответ 1
С включенным контекстным процессором request вы можете использовать {{ request.path }}
для получения URL-адреса во всех ваших шаблонах.
Есть ли способ прочитать путь к текущей странице? Например, я на www.example.com/foo/bar/- и я хочу прочитать '/foo/bar/'. Я должен сделать это в файле шаблона без изменения представлений, и у меня слишком много файлов для редактирования, чтобы редактировать их.
Приветствия.
С включенным контекстным процессором request вы можете использовать {{ request.path }}
для получения URL-адреса во всех ваших шаблонах.
Если вы добавите django.core.context_processors.request
в свой параметр TEMPLATE_CONTEXT_PROCESSORS
, он добавит переменную request
к каждому рендерингу шаблонов, который использует RequestContext
(который является большинством встроенных). Это объект HTTPRequest
для текущего запроса, атрибут path
которого является запрошенным путем. Более подробную информацию можно найти в документах.
Я закончил тем, что использовал это, но столкнулся с маленькой икотой по пути. Вот мой путь решения в надежде, что я кого-нибудь еще кого-нибудь кого-нибудь спасу.
Сначала я добавил эту строку в файл 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",
)