У меня возникла странная проблема. Это мое мнение:Проблема с Django (кеш ?!)
def get_date_range(this_week=True, last_week=False, older_than_two_weeks=False):
dates = {}
d = datetime.today().strftime('%Y-%m-%d')
dt = datetime.strptime(d, '%Y-%m-%d')
if this_week:
this_week_start = dt - timedelta(days = dt.weekday())
this_week_end = this_week_start + timedelta(days=6)
elif (last_week or older_than_two_weeks):
this_week_start = dt - timedelta(days = 14)
this_week_end = this_week_start + timedelta(days=6)
dates = {'date_start' :this_week_start, 'date_end' : this_week_end}
return dates
def load_created_topics_by_time(request):
"""
created this week, last week, older
"""
objects={}
date_range = get_date_range(this_week=True)
topics_this_week = Topic.objects
.filter(is_active=True, date_created__range=(date_range['date_start'],date_range['date_end']))
.order_by('-date_created')
objects['topics_this_week'] = topics_this_week
date_range = get_date_range(this_week=False,last_week=True)
topics_last_week = Topic.objects.filter(is_active=True, date_created__range= (date_range['date_start'],date_range['date_end'])).order_by('-date_created')
objects['topics_last_week'] = topics_last_week
topics_older_two_weeks = Topic.objects.filter(is_active=True, date_created__lt=date_range['date_start']).order_by('-date_created')[:50]
objects['topics_older_two_weeks'] = topics_older_two_weeks
return shortcuts.render(request, 'template.html', objects)
Теперь, когда я запустить его на моей машине он работает отлично, но загружается с сервера, по-видимому попадает в «get_date_range» только один раз. Похоже, что результат этой функции получает кеширование, и это, конечно, испортило мои результаты.
Я не могу использовать @never_cache, потому что это функция, а не вид. Любые решения?
Спасибо, Дэвид
Действительно ли это ваш точный код? Вы уверены, что вызываете функцию get_date_range из вида load_created_topics_by_time? –
Да, это точный код. оба вызова функции находятся в пределах load_created_topics_by_time – Dave
Почему вы не можете использовать '@ never_cache'? Отображается представление, которое вызывает функцию, поэтому функция вызывается только один раз. – Wallace