English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
As many reasons are necessary for page redirection in web applications. You may want to redirect users to another page when a specific action occurs or in case of errors. For example, when a user logs into a website, they are often redirected to their homepage or personal dashboard. In Django, redirection is achieved using the 'redirect' method.
No método "redirect", o nome da vista deve ser passado como parâmetro: a string da URL a ser redirecionada.
myapp/As vistas até agora são como follows −
# Nome do arquivo: example.py # Copyright: 2020 Por w3codebox # Autor por: pt.oldtoolbag.com # Data: 2020-08-08 def hello(request): today = datetime.datetime.now().date() daysOfWeek = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] return render(request, "hello.html", {"today": today, "days_of_week": daysOfWeek}) def viewArticle(request, articleId): """ Uma visualização que exibe um artigo com base em seu ID """ text = "Exibindo artigo Número: %s" %articleId return HttpResponse(text) def viewArticles(request, year, month): text = "Exibindo artigos de: %s"/%s"%(year, month) return HttpResponse(text)
Vamos alterar o hello para redirecionar para djangoproject.com e o viewArticle para redirecionar para nosso interno '/myapp/articles' do myapp/view.py será alterado para o seguinte:
# Nome do arquivo: example.py # Copyright: 2020 Por w3codebox # Autor por: pt.oldtoolbag.com # Data: 2020-08-08 from django.shortcuts import render, redirect from django.http import HttpResponse import datetime # Crie suas vistas aqui. def hello(request): today = datetime.datetime.now().date() daysOfWeek = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] return redirect("https://www.djangoproject.com") def viewArticle(request, articleId): """ Uma visualização que exibe um artigo com base em seu ID """ text = "Exibindo artigo Número: %s" %articleId return redirect(viewArticles, ano = "2045", mês = "02") def viewArticles(request, year, month): text = "Exibindo artigos de: %s"/%s"%(year, month) return HttpResponse(text)
No exemplo acima, primeiro importamos o redirect (redirect) do Django. Para criar um atalho e redirecionar para o site oficial do Django, usamos a URL completa como uma string no método redirect. No segundo exemplo (no viewArticle view), usamos o método redirect para obter o nome da vista e seus parâmetros.
acessar/myapp/hello, exibirá a seguinte tela-
e acessar /myapp/article/42Isso apresentará a seguinte tela-
Também podemos especificar se o "redirect" é temporário ou permanente, adicionando o parâmetro permanent = True. O usuário não verá muita diferença, mas essas são detalhes que os motores de busca levam em consideração na classificação do site.
Nós definimos o parâmetro "name" no url.py ao mapear URLs.
# Nome do arquivo: example.py # Copyright: 2020 Por w3codebox # Autor por: pt.oldtoolbag.com # Data: 2020-08-08 url(r'^articles/(?P\d{2})/(?P\d{4})/', 'viewArticles', nome = 'articles'),
Este nome (aqui o artigo) pode ser usado como argumento da função "redirect"; então o redirecionamento viewArticle pode ser modificado -
# Nome do arquivo: example.py # Copyright: 2020 Por w3codebox # Autor por: pt.oldtoolbag.com # Data: 2020-08-08 def viewArticle(request, articleId): """ Uma visualização que exibe um artigo com base em seu ID """ text = "Exibindo artigo Número: %s" %articleId return redirect(viewArticles, ano = "2045", mês = "02")
Modifique para −
# Nome do arquivo: example.py # Copyright: 2020 Por w3codebox # Autor por: pt.oldtoolbag.com # Data: 2020-08-08 def viewArticle(request, articleId): """ Uma visualização que exibe um artigo com base em seu ID """ text = "Exibindo artigo Número: %s" %articleId return redirect(articles, ano = "2045", mês = "02")
Nota - 还存在一个生成 URL 的函数;它以相同的方式用于重定向;“reverse”方法(django.core.urlresolvers.reverse)。这个函数不返回HttpResponseRedirect对象,而仅仅包含URL和任何传入的参数编译视图的字符串。