Django では、urls.py から直接単純なリダイレクトを行うにはどうすればよいですか? 当然のことながら、私はよく整理された男で、DRY の原則を支持しているので、URL をハードコーディングするのではなく、名前付きの URL パターンに基づいてターゲットを取得したいと考えています。
質問する
75088 次
6 に答える
214
Django 1.4 または 1.5 を使用している場合は、次のようにできます。
from django.core.urlresolvers import reverse_lazy
from django.views.generic import RedirectView
urlpatterns = patterns('',
url(r'^some-page/$', RedirectView.as_view(url=reverse_lazy('my_named_pattern'), permanent=False)),
...
Django 1.6 以降を使用している場合は、次のようにすることができます。
from django.views.generic import RedirectView
urlpatterns = patterns('',
url(r'^some-page/$', RedirectView.as_view(pattern_name='my_named_pattern', permanent=False)),
...
Django 1.9 では、 のデフォルト値がpermanent
True から False に変更されました。permanent
このため、キーワード引数を指定しないと、次の警告が表示されることがあります。
RemovedInDjango19Warning: 「RedirectView.permanent」のデフォルト値は、Django 1.9 で True から False に変更されます。この警告を無効にするには、明示的な値を設定します。
于 2013-03-29T15:41:57.983 に答える
38
これは私にとってはうまくいきます。
from django.views.generic import RedirectView
urlpatterns = patterns('',
url(r'^some-page/$', RedirectView.as_view(url='/')),
...
上記の例'/'
では、任意の URL パターンを追加できるインデックス ページにリダイレクトされることを意味します。
于 2015-12-16T11:06:34.250 に答える
9
RedirectView をサポートできない場合、この方法は古いバージョンの django でサポートされています。
view.py で
def url_redirect(request):
return HttpResponseRedirect("/new_url/")
url.py で
url(r'^old_url/$', "website.views.url_redirect", name="url-redirect"),
を使用して永続的にすることができますHttpResponsePermanentRedirect
于 2015-02-26T12:35:14.650 に答える
9
すべての 404 をホームページにリダイレクトしようとしていたところ、次のようにうまくいきました。
from django.views.generic import RedirectView
...
under urlpatterns, added:
url(r'^.*/$', RedirectView.as_view(url='/home/')),
url(r'^$', RedirectView.as_view(url='/home/')),
于 2015-12-17T22:58:41.977 に答える