2010-01-24 21 views
0

问候 我黑客Django和尝试测试的东西,如: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 

什么是有效而巧妙的模型& templete为实现这一目标?

+0

呃......看起来你已经解决了难题。你在这里问什么? – 2010-01-24 18:06:32

+0

是伊格纳西奥,的确我已经有了解决方案,但感觉笨拙和粗暴。我很好奇,如果有更好的方法来解决这个问题,而不是我的问题。 – Hellnar 2010-01-24 18:15:21

回答

2

看来你已经掌握了一些基本想通了,所以我假设你问抛光建议...在这方面的一些想法:

  1. 我想我有一个单独的网址,例如/items/today/,或者只是/today/

  2. 你会想要使用日期组件datime.datetime.now()只有。整个事物是一个包含当前时间的对象,指定为微秒的精度。

  3. 如何为所有三种情况使用单个基本模板并从中继承来更改包含购买时按钮点击的块,价格等或说明该项目未被出售的注释还有/什么。然后,人们仍然可以在说出像这样的东西时使用带编号的网址。请参阅我昨天购买的内容,您必须通过电子邮件访问该网站。 ;-)

1

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

+0

一个好主意,但我的项目将显示为(通过交易)下的列表,所以我想你的想法不会奏效。 – Hellnar 2010-01-24 18:53:33

+1

不确定你的意思。由于我将序列保存在数据库中,我仍然可以显示当天的以前的照片。 '/ photo_of_the_day /'是今天的照片,而'/ photo_of_the_day/42'是以前的ID。 – 2010-01-24 20:16:22