четверг, 15 сентября 2011 г.

django: Работаем с параметрами HTTP-запроса в шаблонах


Часто возникает необходимость узнать, к примеру, текущий URL при отрисовке шаблона. Например, простейшая вещь - добавить на те или иные страницы сайта Facebook-овский лайк. Разработчики этой соц.сети предлагают нам следующий код для вставки:



Как видим, url статично. Вставляем код в шаблон и вместо url подставляем {{request.get_full_path}}. Отображаем обновленную страницу - результата пока нет. Дело в том, что мы забыли добавить в settings.py request-препроцессор контекста.
 
TEMPLATE_CONTEXT_PROCESSORS = ( 
#здесь перечислены какие-то другие процессоры     
'django.core.context_processors.request', 
#здесь перечислены какие-то другие процессоры 
) 
 

После этого при отображении страницы с вставленным кодом будет отображаться фейсбуковская лайк-кнопка. Отмечу, что в приведенном примере используется функция get_full_path, которая возвращает относительный url со всеми GET-параметрами запроса. Есть еще функция path - возвращает относительный url без имени домена и без GET-параметров . Узнать имя хоста / домен позволяет функция get_host. Таким образом, для получения полного абсолютного URL страницы в шаблоне необходимо добавить код:
  {{request.get_host}} {{request.get_full_path}} 

специально указывать слеш после хоста не нужно, так как *path - функции возвращают url уже с лидирующим слешем.


int main(){
 printf("%s","Hello world");
}

Комментариев нет:

Отправить комментарий

Если Вы нашли ошибку у автора, у Вас есть вопрос или просто хотите поделиться чем-то полезным, то пишите - не стесняйтесь..