Powered by Djangoへの移行計画(URL編)

現在このブログは中途半端に移行されていますので、画像が表示されなかったり、レイアウトが崩れたりする可能性があります。
この記事を旧ブログで閲覧するには、以下のURLからご覧ください。
http://blog2.monospace.jp/2007/09/06/django_powered_blog5/

現在ここはWordPressで動いてるんですが、 いわゆるパーマリンクのURLを↓のような感じにしてます。 http://blog.monospace.jp/2007/09/02/django_powered_blog4/ URLだけで記事の投稿日が分かるし、 内容もなんとなくわかるので引き続きこれを採用したいと思ってます。 手順としてはこんな感じ。
  1. models.pyでget_absolute_url()を実装する
  2. urls.pyでこの形式にはまるViewを指定する
  3. テンプレート内でget_absolute_urlを呼び出す
まず、models.pyですが、 [python] def get_absolute_url(self): return "%04d/%02d/%02d/%s/" % \ (self.posted_at.year, self.posted_at.month, self.posted_at.day, self.slug) [/python] posted_atというDateTimeFieldから年月日をいただきます。 slugは日本語だと微妙な存在のSlugFieldを使ってます。 まあ現状もslugは手書きで書いてるので、とりあえず使います。 次にurls.pyですが、 GenericViewsのdate_based.object_detailを使います。 [python] (r'^(?P\d{4})/(?P\d{2})/(?P\d{2})/(?P\w+)', 'date_based.object_detail',, {'queryset': latest, 'slug_field': 'slug', # SlugField名 'date_field': 'posted_at', # DateTimeField名 'month_format': '%m', # デフォルトだとApr, Mayとかになる 'day_format': '%d', # 省略可 }) [/python] object_detailはidを渡す他にslugを渡すことができます。 ちなみにこのViewは、デフォルトでは未来の日付が指定されると404を返します。 最後はテンプレートで [html]記事のパーマリンク[/html] って感じで完成です。 ちまちまと作ってます。なんかいろいろ気が変わって作り直したりして時間かかりそうだなー。
Posted at: 
2007/09/06 02:33:20
0 Comments
0 TrackBacks
Tags: 
Trackback: 
http://blog.monospace.jp/2007/09/06/django_powered_blog5/trackback/

TrackBacks

まだ登録されていません。

Comments

まだ登録されていません。

Add Comment

Add Comment