Форум сайта python.su
Добрый день, прошу сильно не пинать, новичок в Django
Нужно перед рендером централизовано парсить данные, ну для начала хотя бы добавить слово в конец контента.
нашел похожую тему
http://python.su/forum/topic/11368/?page=1#post-71591
сделал так
class PublicationLink(object): def process_response(self, request, response): content = response.content content.replace('</body>', 'CoolMiddlweare </body>') response.content = content
Отредактировано alexander0505 (Фев. 17, 2014 13:45:27)
Офлайн
Вообще топик надо создавать в разделе - Django. Я думаю перенесут модераторы.
По теме, писал как твой свой подобный промежуточный слой, столкнулся с таким нюансом, что обычные объекты ответа - HttpResponse, которые возвращают методы типа render, render_to_response нет возможности редактировать. Вместо этого в представлениях(viewes) необходимо возвращать объекты - SimpleTemplateResponse\TemplateResponse, заточенные специально под это дело(не понимаю, почему ими не заменят обычные HttpResponse), а в промежуточном слое использовать метод process-template-response.
Отредактировано buddha (Фев. 17, 2014 17:00:07)
Офлайн
Тогда спрошу так:
был написан плагин для редактора ckeditor - а который позволяет указывать ссылку на существующий материал сайта. Он вставляет псевдоссылки , которые преобразуются в реальные с помощью специального метода перед рендером
Можно ли как то сделать это централизовано? сейчас это работает только там где я явно вызываю такой метод
Отредактировано alexander0505 (Фев. 18, 2014 14:39:32)
Офлайн
Содержимое HttpResponse не получится отредактировать в middleware, содержимое SimpleTemplateResponse\TemplateResponse получится(это всего лишь классы-наследники).
Исходя из этого, если необходимо сделать это для всех представлений(централизовано), то необходимо заменить возвращаемые объекты этих представлений с HttpResponse(render(), render_to_response() ) на SimpleTemplateResponse\TemplateResponse и в методе process-template-response вставить ваш метод преобразования ссылки. Я бы так сделал.
Если нет возможности\желания менять возвращаемый объект всех представлений, запилите декоратор =) и навесьте его на необходимые представления)
Надеюсь понятно расписал.
Отредактировано buddha (Фев. 19, 2014 08:46:32)
Офлайн