2012年1月4日水曜日

DjangoでDateTimeを月や年でリスト取得する方法

DjangoでDateTimeを月や年でリストとして取得する方法
たとえば、blogなどで投稿がある月のみをリスト化したいときに、年・月のリストを取得するときに利用する方法

Entryというテーブルのpub_dateというカラムをリスト取得する場合、
Entry.objects.dates('pub_date', 'year') -> 年でリスト取得
Entry.objects.dates('pub_date', 'month') -> 年・月でリスト取得
昇順でリストを取得したい場合、order='DESC'を引数に追加する

参考サイト
QuerySet API

DjangoでDateTime型をテンプレート内でフォーマッティングする方法

DjangoでDateTime型のパラメータをテンプレート内で、所望のフォーマットで表示する方法

1.views.pyでは、他の型のパラメータと同じように、Dictionary型をContext型にフォーマッティングして、テンプレートに読み込ませる
  1. import datetime  
  2. from django.template import loader, Context  
  3. from django.http import HttpResponse  
  4.   
  5. def index(request):  
  6.     param1 = 'test'  
  7.     param2 = datetime.datetime.now()  
  8.     template = loader.get_template('test.html')  
  9.     contexts = Context({'param1':param1,  
  10.                         'param2':param2,})  
  11.     return template.render(contexts)  

テンプレート内では、次のようにフォーマッティングする
  1. {{ param2|date:"Y/n/d g:i A" }}  
上のように指定すると、「2012/1/4 5:12 PM」と表示される

参考サイト
Built in template tags and filters

2012年1月1日日曜日

DjangoでSTATIC_URLをテンプレートで使う方法

STATIC_URLをテンプレートで参照できるようにする方法

1.settings.pyに割り当てたいURLを記述する
  1. STATIC_URL = 'http://localhost/static'  

2.views.pyでテンプレートを呼び出す時にRequestContextを利用する
  1. from django.template import RequestContext, loader  
  2. from django.http import HttpResponse  
  3.   
  4. def show(request):  
  5.     template = loader.get_template('show.html')  
  6.     contexts = RequestContext({})  
  7.     return HttpResponse(template.lender(contexts))  

3.テンプレートファイル(show.html)でSTATIC_URLを使う
{{STATIC_URL}}と指定すると、settings.pyで定義した値を表示できる