【问题标题】:Django, making a page activate for a fixed timeDjango,使页面在固定时间激活
【发布时间】:2010-01-24 18:03:24
【问题描述】:

问候 我正在破解 Django 并尝试测试以下内容:

woot.com 一样,我想“每天销售一件商品”,所以当天只有一件商品可用(假设默认 www.mysite.com 将被重定向到该商品),

假设我调用这些项目的网址是这样的: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

实现这一目标的有效和聪明的模型和模板是什么?

【问题讨论】:

  • 呃......看起来你已经解决了困难的部分。你在这里问什么?
  • 是的,Ignacio,确实我已经有了解决方案,但感觉笨拙和粗糙。我很好奇是否有比我更好的方法来解决这个问题。

标签: python django django-models django-views


【解决方案1】:

看来您已经掌握了基础知识,所以我假设您是在寻求完善建议……这方面的一些想法:

  1. 我想我应该为此设置一个单独的 URL,例如 /items/today/,或者只是 /today/

  2. 您将希望仅使用datime.datetime.now() 的日期组件。整个事物是一个对象,其中包含指定为微秒精度的当前时间。

  3. 如何为所有三种情况使用单个基本模板并从它继承来更改包含购买时单击的按钮、价格等的块,或者说明该项目不是卖掉了/不再。然后人们仍然可以在电子邮件中说看看我昨天买了什么,你必须去那个网站之类的话时,仍然可以使用带编号的 URL。 ;-)

【讨论】:

    【解决方案2】:

    我的网站上有一张当日照片。我有一个代表今天照片的模型,一个 cron 作业在午夜运行一个自定义管理命令,用序列中的下一张照片(也是一个模型)更新它。所以我的视图所要做的就是从数据库中检索当前照片。

    【讨论】:

    • 一个好主意,但我的项目将显示为(已通过交易)下的列表,所以我猜你的想法行不通。
    • 不确定你的意思。由于我将序列保存在数据库中,因此我仍然可以显示当天以前的照片。 /photo_of_the_day/ 是今天的照片,/photo_of_the_day/42 是之前的照片。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-29
    • 1970-01-01
    • 2016-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多