Djangoのurls.pyの引数に関するメモ

今まではDjangoの「urls.py」で定義するURLルーティングの、tupleの2番目の引数には関数のパスを指した文字列を定義していましたが、ここは関数オブジェクトを指定することもできることがわかりました。関数オブジェクトを指定した方が、何かと都合がいいと思いますので、今後はそうすることにします。(参考: Passing callable objects instead of strings - Django | URL dispatcher | Django documentation)

例) 定数で定義していたものを関数オブジェクトに変更

 r(‘item/$', ‘myapps.views.item.index'),
↓
from myapps.views import item
r(‘item/$', item.index),

また、「urlresolvers.reverse」の引数にも文字列ではなく、関数オブジェクトを指定できました。

from django.core import urlresolvers
return urlresolvers.reverse("myapps.views.item.index")
↓
from myapps.views import item
return urlresolvers.reverse(item.index)

※ 関数オブジェクトを指定した方が都合のよいことは以下の通りです。

  • パッケージの変更に強くなる。
  • 冗長なパスを省くことができ、定義の横幅が短くなる。

この記事が役に立った場合、シェアしていただけると励みになります!!