English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Переадресация страниц в веб-приложениях необходима по многим причинам. Возможно, вы хотите перенаправить пользователя на другую страницу, когда происходит определенное действие или возникает ошибка. Например, когда пользователь заходит на веб-сайт, он часто перенаправляется на свою домашнюю страницу или личный面板. В Django использование перенаправления реализуется с помощью метода "redirect".
В методе "redirect" в качестве параметра необходима строка URL, к которой будет произведено перенаправление.
myapp/views до сих пор выглядит так −
# Файл: example.py # Авторские права: 2020 By w3codebox # Автор: ru.oldtoolbag.com # Дата: 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): """Представление, отображающее статью на основе ее ID""" text = "Displaying article Number: %s" % articleId return HttpResponse(text) def viewArticles(request, year, month): text = "Displaying articles of : %s/%s"%(year, month) return HttpResponse(text)
Давайте изменим hello, чтобы перенаправлять на djangoproject.com, а viewArticle перенаправлять на наш внутренний '/myapp/articles'. myapp/view.py будет изменен следующим образом:
# Файл: example.py # Авторские права: 2020 By w3codebox # Автор: ru.oldtoolbag.com # Дата: 2020-08-08 from django.shortcuts import render, redirect from django.http import HttpResponse import datetime # Create your views here. 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): """Представление, отображающее статью на основе ее ID""" text = "Displaying article Number: %s" % articleId return redirect(viewArticles, year = "2045", month = "02") def viewArticles(request, year, month): text = "Displaying articles of : %s/%s"%(year, month) return HttpResponse(text)
В этом примере мы сначала импортируем redirection (redirect) из Django. Удобный способ для перенаправления на официальный сайт Django, нам нужно использовать полный URL для метода «redirect» в виде строки, во втором примере (в методе viewArticle) передаем имя метода и его параметры.
При посещении /myapp/hello, будет отображаться следующий экран-
При посещении /myapp/article/42, будет отображаться следующий экран-
También se puede especificar si «redirect» es temporal o permanente, agregando el parámetro permanent = True. El usuario no notará la diferencia, pero estos son detalles que se tienen en cuenta al rankar sitios de búsqueda.
Мы определяем параметр «name» в url.py при маппинге URL.
# Файл: example.py # Авторские права: 2020 By w3codebox # Автор: ru.oldtoolbag.com # Дата: 2020-08-08 url(r'^articles/(?P\d{2})/(?P\d{4})/', 'viewArticles', name = 'articles'),
Это имя (здесь статья) может использоваться в качестве аргумента метода "redirect", поэтому перенаправление viewArticle можно изменить -
# Файл: example.py # Авторские права: 2020 By w3codebox # Автор: ru.oldtoolbag.com # Дата: 2020-08-08 def viewArticle(request, articleId): """Представление, отображающее статью на основе ее ID""" text = "Displaying article Number: %s" % articleId return redirect(viewArticles, year = "2045", month = "02")
Измените на −
# Файл: example.py # Авторские права: 2020 By w3codebox # Автор: ru.oldtoolbag.com # Дата: 2020-08-08 def viewArticle(request, articleId): """Представление, отображающее статью на основе ее ID""" text = "Displaying article Number: %s" % articleId return redirect(articles, year = "2045", month = "02")
Примечание - Есть функция создания URL; она используется для перенаправления в том же порядке; метод "reverse" (django.core.urlresolvers.reverse). Эта функция не возвращает объект HttpResponseRedirect, а содержит только URL и любые переданные параметры для компиляции строки представления.