2013-03-29 27 views

答えて

152

あなたが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または上にある場合は、あなたがこれを行うことができます:Djangoの1.9では

from django.views.generic import RedirectView 

urlpatterns = patterns('', 
    url(r'^some-page/$', RedirectView.as_view(pattern_name='my_named_pattern', permanent=False)), 
    ... 

を、 permanentのデフォルト値がTrueからFalseに変更されました。あなたはpermanentキーワード引数を指定しない場合このため、この警告が表示されることがあります

RemovedInDjango19Warning:「RedirectView.permanent」のデフォルト値は、Djangoの1.9でのTrueからFalseに変更されます。明示的な値を設定すると、この警告が消えます。

+17

ただ、ノート、RedirectViewがデフォルトとして真=永久持っていることを覚えておいてください。 –

+3

https://docs.djangoproject.com/jp/1.7/ref/class-based-views/base/#redirectview – Wtower

+5

すべてをリダイレクトできます。同様に、 '' '(r '^。*/$'、RedirectView.as_view(url = 'http://newurl.com'))、' '' – radtek

8

あなたはあなたが作ることができるurl.py

url(r'^old_url/$', "website.views.url_redirect", name="url-redirect"), 

でview.py

def url_redirect(request): 
    return HttpResponseRedirect("/new_url/") 

でRedirectView

をサポートできない場合は、この方法では、ジャンゴの古いバージョンではサポートされていますそれは永久に使用することによってHttpResponsePermanentRedirect

24

これは私のために働く。上記の例では

from django.views.generic import RedirectView 

urlpatterns = patterns('', 
    url(r'^some-page/$', RedirectView.as_view(url='/')), 
    ... 

'/'は、インデックスページ、あなたはまた、任意のURLパターンを追加することができます にリダイレクトすることを意味します。

+1

'RedirectView'はDjangoの古いバージョンでは' permanent = True'がデフォルトで、Djangoバージョンでは 'permanent = False'がデフォルトとして> = 1.9であることに注意してください。 – Flimm

5

私はホームページにすべての404エラーをリダイレクトしようとしていたし、次は素晴らしい仕事:

from django.views.generic import RedirectView 
... 
under urlpatterns, added: 
    url(r'^.*/$', RedirectView.as_view(url='/home/')), 
    url(r'^$', RedirectView.as_view(url='/home/')), 
関連する問題