Django, заставляя страницу активироваться на фиксированное время - PullRequest
0 голосов
/ 24 января 2010

Поздравления Я взламываю Django и пытаюсь проверить что-то вроде:

Как и woot.com , я хочу продавать «предмет в день», поэтому на этот день будет доступен только один предмет (скажем, по умолчанию www.mysite.com будет перенаправлен на этот предмет )

Предположим, мои URL для вызова этих предметов будут такими: www.mysite.com/item/<number>

моя модель для товара:

class Item(models.Model):
        item_name = models.CharField(max_length=30)
        price = models.FloatField()
        content = models.TextField() #keeps all the html content
        start_time = models.DateTimeField()
        end_time = models.DateTimeField()

И мой взгляд на рендеринг:

def results(request, item_id):
    item = get_object_or_404(Item, pk=item_id)
 now = datetime.now()

    if item.start_time > now:
     #render and return some "not started yet" error templete
 elif item.end_time < now:
     #render and return some "item selling ended" error templete
 else:
     # render the real templete for selling this item

Какой была бы эффективная и умная модель и шаблон для достижения этой цели?

Ответы [ 2 ]

1 голос
/ 24 января 2010

У меня на сайте есть фото дня. У меня есть модель, которая представляет сегодняшнюю фотографию, и задание cron запускает пользовательскую команду управления в полночь, чтобы обновить ее следующей фотографией в последовательности (также моделью). Таким образом, все, что мне нужно, это получить текущую фотографию из базы данных.

1 голос
/ 24 января 2010

Похоже, вы уже поняли основы, поэтому я предполагаю, что вы спрашиваете о рекомендациях по полировке ... Несколько идей в этом ключе:

  1. Я думаю, что для этого у меня будет отдельный URL, например /items/today/, или, может быть, просто /today/.

  2. Вы захотите использовать компоненты даты datime.datetime.now() только . Все это объект, содержащий текущее время, указанное с точностью до микросекунды.

  3. Как насчет использования единого базового шаблона для всех трех случаев и наследования от него для изменения блока, содержащего либо кнопку, на которую нужно нажать при покупке, цену и т. Д., Либо примечание о том, что предмет не продается? продано еще / больше. Тогда люди все еще могут использовать пронумерованные URL-адреса, когда говорят что-то вроде Посмотрите, что я купил вчера, вы должны перейти на этот сайт по электронной почте. ; -)

...