Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Помогите написать декоратор для Django / 3 сообщений из 3, страница 1 из 1
05.08.2012, 18:37:34
    #37904921
kusha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать декоратор для Django
Есть функция:
Код: python
1.
2.
3.
4.
@decorator
def func(request):
  hello = "hello"
  return render_to_responce("test.html", locals() )


шаблон test.html:
Код: python
1.
2.
{{ hello }}
{{ username }}


хочу написать декоратор, который для func(request) добавляет переменную user. У меня пока такой вариант:
Код: python
1.
2.
3.
4.
5.
6.
7.
8.
def decorator(func):
  def wrapper( request, *args, **kwargs):
    username = request.user.username
    q = func(request, *args, **kwargs)
    #как username вставить в func не знаю ...
    #что нужно дописать ...
    return q
  return wrapper
...
Рейтинг: 0 / 0
06.08.2012, 07:05:58
    #37905123
FishHook
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать декоратор для Django
kusha,

1. Если юзер нужен только в шаблоне передавайте в шаблон RequestContext(request)

Код: python
1.
2.
3.
4.
5.
from django.template.context import RequestContext
.....
def func(request):
    hello = "hello"
    return render_to_responce("test.html", locals(), RequestContext(request) )


2. Можно выдумывать велосипед, а можно использовать нормальный механизм из коробки - Class Based Views.
Смотрите, как все просто

Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
class MyBaseView(object):

    def dispatch(self, request, *args, **kw):
        self.user=request.user
        return super(MyBaseView, self).dispatch(request, *args, **kw)


    def get_context_data(self, **kwargs):
        context=super(MyBaseView, self).get_context_data(**kwargs)
        context['user']=self.user
        return context

class Func(MyBaseView, TemplateView):
    template_name='test.html'
...
Рейтинг: 0 / 0
24.10.2012, 15:38:36
    #38011600
inoks
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать декоратор для Django
kusha,

вариант с {{user.username}} не подходит?
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Помогите написать декоратор для Django / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]