私のDjangoプロジェクトの "animals"には "birds"というアプリがあります。動物では/ URIは、このような鳥/ urls.pyにルーティングされている「鳥」のurls.py:DjangoプロジェクトのアプリURIのエイリアスurls.py
urlpatterns=[
url(r'^birds/', include('birds.urls')),
url(r'^b/', include('birds.urls')), # alias
]
「鳥/」公式、永久的なベースURIです。 "b /"はショートカット/エイリアスとして受け入れられます。
"b/penguin"と入力してもブラウザーのアドレスバーに(最終的に) "birds"が表示されるように、 "birds /"にリダイレクトされた "b /" URI(永続的) /ペンギン"?私は "birds"アプリでコードに触れない方がいいです。なぜなら、プロジェクトがどのようにURIをアプリにマップするかを知ってはならないからです。
私は
RedirectView.as_view(pattern_name='birds'))
を使用しようとしましたが、これは410ゴーン応答をもたらします。そして
RedirectView.as_view(url='/birds/'))
リダイレクト/ b /ペンギンと/ birds /は、私の鳥を殺します。
これは私の作品です(Djangoバージョン1.9.5)。私のブラウザは、最初の '/ b/penguin'リクエストがDjangoから'/birds/penguin'位置ヘッダを伴って '302 Found'ステータス応答を得ることを記録しています。ブラウザは次に、 '200 OK 'という2番目の'/birds/penguin'リクエストを作成します。 Djangoが '302 Found'ではなく' 301 Moved Permanently'を返すように 'permanent = True'属性を追加しました。 – Roger