Tipfy & Jinja: создание URL выхода для каждой страницы - PullRequest
3 голосов
/ 30 ноября 2011

У меня есть шаблон jinja с обычными шаблонными ссылками, одна из которых - ссылка «Выйти».URL-адрес этой ссылки должен быть создан с помощью Users.create_logout_url () перед отображением страницы.

Я бы хотел избежать создания этого URL-адреса и добавления его в мой render_response для каждого отдельного обработчика get / post.Я искал альтернативы, но не нашел функционального пути для этого.

BaseRequestHandler

Это кажется самым чистым подходом, но я не уверен, какидти об этом.Будет ли это случай

self.vars['logout_link'] = users.create_logout_url(self.request.path))

.. и затем во всех стандартных обработчиках ответов:

return render_response('template.html', **vars)

?

Декораторы

Это похоже на другой вариант, хотя кажется немного грязным.Я полагаю, что это будет работать таким же образом (назначение ссылки выхода для локальной переменной в функции-обертке).

Обработка контекста?

Я использую tipfy/ jinja, который, кажется, не поддерживает это, насколько я могу судить.

Любой совет, какой путь мне следует исследовать дальше?

Спасибо

Ответы [ 2 ]

6 голосов
/ 01 декабря 2011

Я делаю что-то похожее с Jinja / GAE и использую BaseHandler + шаблон, который я включаю.BaseHandler:

class BaseHandler(webapp2.RequestHandler):
    ...
    def render_jinja(self, name, **data):
        data['logout_url']=users.create_logout_url(self.request.uri)
        template = jinja_environment.get_template('templates/'+name+'.html')
        self.response.out.write(template.render(data))

Тогда я могу наследовать базовый обработчик, например, для обработчиков форм:

class FileUploadFormHandler(BaseHandler):
    def get(self):
        ...
        self.render_jinja('contact_jinja', form=form, ...
4 голосов
/ 01 декабря 2011

Не использовав ни одного фреймворка, я не уверен, есть ли хороший способ добавить его в шаблон. Может быть какая-то промежуточная программа, которую вы можете реализовать, но, как я уже сказал, у меня нет опыта работы с этими платформами.

Тем не менее, вы рассматривали возможность использования универсального URL для выхода из системы с обработчиком, который даст 303 правильному URL для пользователя?

...