0

ご挨拶 私は Django をハッキングして、次のようなものをテストしようとしています:

woot.comのように、「1 日 1 アイテム」を販売したいので、その日に利用できるアイテムは 1 つだけです (たとえば、デフォルトの 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

これを達成するための効率的で賢いモデルとテンプレートは何でしょうか?

4

2 に答える 2

1

あなたは基本を理解しているようですので、洗練された提案を求めていると思います... この流れでいくつかのアイデア:

  1. このような別の URL があると思いますが、/items/today/おそらく/today/.

  2. のみの日付コンポーネントdatime.datetime.now()を使用する必要があります。全体は、マイクロ秒の精度で指定された現在の時刻を含むオブジェクトです。

  3. 3 つのケースすべてに 1 つの基本テンプレートを使用し、それを継承して、購入時にクリックするボタン、価格など、またはアイテムがまだ販売されていないことを示すメモのいずれかを含むブロックを変更するのはどうでしょうか。そうすれば、「昨日買ったものを見る、メールでそのサイトに行かなければならない」などと言うときに、番号付きの URL を引き続き使用できます。;-)

于 2010-01-24T18:14:37.143 に答える
1

私は私のサイトにその日の機能の写真を持っています. 今日の写真を表すモデルがあり、cron ジョブが真夜中にカスタム管理コマンドを実行して、シーケンス内の次の写真 (モデルでもあります) で更新します。したがって、ビューで行う必要があるのは、データベースから現在の写真を取得することだけです。

于 2010-01-24T18:36:06.753 に答える