slugの使い方

model.pyが以下の場合で

class Page(models.Model):
	title=models.CharField(unique=True, maxlength=200)
	body=models.TextField()
	date=models.DateField(auto_now=True)
	class Admin:
		pass

	def __repr__(self):
		return self.title


id=1, title="test", body="test test"
のデータあり、
url.pyを以下にした場合

info_dict={'queryset': Page.objects.all()}

page_dict={'model': Page}

urlpatterns=patterns('',
(r'^(?P<object_id>\d+)/$','django.views.generic.list_detail.object_detail',
 info_dict ),
(r'^(?P<slug>\w+)/$','django.views.generic.list_detail.object_detail',
 dict(info_dict, slug_field='title')),
)
http://localhost:8000/simplewiki/1/

でも

http://localhost:8000/simplewiki/test/

でも
同じインスタンス
/mytemplate/simplewiki/page_detail.html
に反映されます。

正規表現で取り出した(?P\w+)は、titleであると
slug_field='title'で伝えてるわけですね。


また、

veiw.genericは便利だけど、そのままでは使えないケースが多いので、
view.pyにコピーして弄るか、
自前のgenericをmyporjectの下に作った方がよいかもしれません。