django 設定ファイルのいくつかのオプションは URL です。たとえばLOGIN_URL
、 やLOGIN_REDIRECT_URL
. これらの URL のハードコーディングを回避し、代わりに逆 URL マッピングを使用することは可能ですか? 現時点では、複数の場所で同じ URL を書いているのは本当にここだけです。
9477 次
2 に答える
58
Django 1.5 以降
Django 1.5 以降、名前付き URL パターンLOGIN_URL
を受け入れます。LOGIN_REDIRECT_URL
つまり、設定で URL をハードコードする必要はありません。
LOGIN_URL = 'login' # name of url pattern
Django 1.5 から 1.9 では、view 関数名も使用できますが、Django 1.8 では廃止され、Django 1.10 以降では機能しないため、これはお勧めしません。
LOGIN_URL = 'django.contrib.auth.views.login' # path to view function
ジャンゴ1.4
Django 1.4の場合、使用できますreverse_lazy
LOGIN_URL = reverse_lazy('login')
Django 1.3 以前
これは、reverse_lazy
Django に追加される前に機能した元の回答です。
urls.py で、設定をインポートします。
from django.conf import settings
次に、URLパターンを追加します
urlpatterns=('',
...
url('^%s$' %settings.LOGIN_URL[1:], 'django.contrib.auth.views.login',
name="login")
...
)
LOGIN_URL
先頭のスラッシュを削除するには、スライスする必要があることに注意してください。
シェル内:
>>>from django.core.urlresolvers import reverse
>>>reverse('login')
'/accounts/login/'
于 2009-10-05T12:03:31.217 に答える
14
django開発バージョンでは、reverse_lazy()がオプションになります: https ://docs.djangoproject.com/en/dev/ref/urlresolvers/#reverse-lazy
于 2012-01-09T15:42:51.800 に答える