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
slug_field='title'で伝えてるわけですね。
また、
veiw.genericは便利だけど、そのままでは使えないケースが多いので、
view.pyにコピーして弄るか、
自前のgenericをmyporjectの下に作った方がよいかもしれません。