Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » как сделать, что бы timezone.now вызывался при каждом запросе? [RSS Feed]

#1 Апрель 22, 2013 21:58:01

slotmim
Зарегистрирован: 2012-05-16
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

как сделать, что бы timezone.now вызывался при каждом запросе?

В этой главе документации говориться, что если использовать timezone.now без скобок, то он будет вызываться при каждом обращении. Но у меня он вызывается только один раз, при запуске, как со скобками, так и без.

версии
Django (1, 5, 1, ‘final’, 0)
Python 2.7.3

Офлайн

#2 Апрель 23, 2013 15:50:20

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2260
Репутация: +  41  -
Профиль   Отправить e-mail  

как сделать, что бы timezone.now вызывался при каждом запросе?

код где?

Офлайн

#3 Апрель 24, 2013 00:04:18

slotmim
Зарегистрирован: 2012-05-16
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

как сделать, что бы timezone.now вызывался при каждом запросе?

slav0nic
код где?

...
from django.utils import timezone
...
url(r'^$',
    ListView.as_view(
        queryset=Poll.objects.filter(pub_date__lte=timezone.now) \
            .order_by('-pub_date')[:5],
        context_object_name='latest_poll_list',
        template_name='polls/index.html'),
    name='index'),

вот. но он не фильтрует правильно. как уже сказал выше, только один раз, при запуске сервера вызывается метод timezone.now и сравнивается с этими датой и временем.

Отредактировано slotmim (Апрель 24, 2013 00:06:11)

Офлайн

#4 Апрель 24, 2013 05:15:26

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

как сделать, что бы timezone.now вызывался при каждом запросе?

Очевидно, нужно вынести в класс

url(r'^$', Index.as_view(template_name="index.html"), name='index'),

class Index(ListView):
    def get_queryset():
        return Poll.objects.filter(pub_date__lte=timezone.now) \
            .order_by('-pub_date')[:5]
   def get_context_data(**kwargs):
       #blabla



Отредактировано FishHook (Апрель 24, 2013 05:17:20)

Офлайн

#5 Апрель 26, 2013 03:07:30

slotmim
Зарегистрирован: 2012-05-16
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

как сделать, что бы timezone.now вызывался при каждом запросе?

FishHook
Очевидно, нужно вынести в класс
т.е не создавая класса нельзя? просто в этой главе документации говориться, что если использовать timezone.now без скобок, то он будет вызываться при каждом обращении. И они его используют не создавая класса. У меня же, когда я его так использую, запись которую я создаю не отображается, хоть если ждать долгое время, а если перезапускаю сервер отображается.
Что я не так делаю? или это какой то баг?

Отредактировано slotmim (Апрель 26, 2013 03:07:58)

Офлайн

#6 Апрель 26, 2013 13:12:05

inoks
От: Russia
Зарегистрирован: 2012-12-11
Сообщения: 343
Репутация: +  35  -
Профиль   Адрес электронной почты  

как сделать, что бы timezone.now вызывался при каждом запросе?

если запрос:

queryset=Poll.objects.filter(pub_date__lte=timezone.now).order_by('-pub_date')[:5]
изменить на:
queryset=Poll.objects.filter(pub_date__lte=timezone.now).order_by('-pub_date')
работает корректно?

Вообще есть некоторое несоответсвие описания/баг https://code.djangoproject.com/ticket/20241

Отредактировано inoks (Апрель 26, 2013 13:17:16)

Офлайн

  • Начало
  • » Django
  • » как сделать, что бы timezone.now вызывался при каждом запросе?[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version