Como posso redirecionar o tráfego que não corresponde a nenhum dos meus outros URLs de volta para a página inicial?
urls.py:
urlpatterns = patterns('',
url(r'^$', 'macmonster.views.home'),
#url(r'^macmon_home$', 'macmonster.views.home'),
url(r'^macmon_output/$', 'macmonster.views.output'),
url(r'^macmon_about/$', 'macmonster.views.about'),
url(r'^.*$', 'macmonster.views.home'),
)
Como está, a última entrada envia todo o tráfego "outro" para a página inicial, mas desejo redirecionar por meio de um HTTP 301 ou 302 .
fonte
name
parteDEBUG = True
ou pelo menos definir aADMINS
opção - docs.djangoproject.com/en/dev/ref/settings/#std:setting-ADMINSNo Django 1.8, é assim que fiz o meu.
Em vez de usar
url
, você pode usar opattern_name
, que é um pouco não-SECO, e irá garantir que você altere seu url, você não precisa alterar o redirecionamento também.fonte
Se você está preso no django 1.2 como eu estou e RedirectView não existe, outra maneira centrada na rota de adicionar o mapeamento de redirecionamento é usando:
Você também pode redirecionar tudo em uma partida. Isso é útil ao alterar a pasta de um aplicativo, mas deseja preservar os favoritos:
É preferível a django.shortcuts.redirect se você está apenas tentando modificar o roteamento de url e não tem acesso a .htaccess, etc (estou no Appengine e app.yaml não permite o redirecionamento de url nesse nível como um .htaccess).
fonte
(r'^match_folder/(?P<path>.*)/$', RedirectView.as_view(url='/new_folder/%(path)s/', permanent=True), name='view-name'),
Outra maneira de fazer isso é usando HttpResponsePermanentRedirect assim:
Em view.py
No url.py
fonte
Os outros métodos funcionam bem, mas você também pode usar o bom e velho
django.shortcut.redirect
.O código abaixo foi retirado desta resposta .
No Django 2.x:
fonte