English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Webアプリケーションではページリダイレクトが必要な理由はいくつかあります。特定のアクションが発生したり、エラーが発生した場合にユーザーを別のページにリダイレクトしたいかもしれません。例えば、ユーザーがウェブサイトにログインすると、よく主页や個人的なダッシュボードにリダイレクトされます。Djangoでは、「redirect」メソッドを使用してリダイレクトを実現します。
「redirect」メソッドでは、リダイレクト先のURLを指定する文字列のビュー名が引数として必要です。
myapp/viewsは今までのようになります:
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ja.oldtoolbag.com # Date : 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 = "表示している記事番号: %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は以下のように修正されます:
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ja.oldtoolbag.com # Date : 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 = "表示している記事番号: %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)
この例では、まずDjangoからredirect(redirect)をインポートして、Djangoの公式ウェブサイトにリダイレクトするショートカットを使用します。リダイレクトメソッドには、完全なURLを文字列として使用し、第二の例(viewArticleビュー)の'redirect'メソッドでは、ビュー名とそのパラメータを引数として渡します。
アクセス/myapp/helloと表示され、以下のスクリーンが表示されます-
アクセス /myapp/article/42以下のスクリーン-
「redirect」が一時的なものか永続的なものかを指定することもできます。ユーザーには違いは見られませんが、これらは細部ですが、検索エンジンがサイトの評価を行う際に考慮されます。
url.pyで「name」パラメータを定義してURLマッピングを行う際に−
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ja.oldtoolbag.com # Date : 2020-08-08 url(r'^articles/(?P\d{2}/(?P\d{4}/', 'viewArticles', name = 'articles'),
この名前(ここの記事)は「redirect」メソッドの引数として使用できるため、viewArticleのリダイレクトを変更できます -
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ja.oldtoolbag.com # Date : 2020-08-08 def viewArticle(request, articleId): """ IDに基づいて記事を表示するビュー「""" text = "表示している記事番号: %s" %articleId return redirect(viewArticles, year = "2045", month = "02")
を「−」に変更します
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ja.oldtoolbag.com # Date : 2020-08-08 def viewArticle(request, articleId): """ IDに基づいて記事を表示するビュー「""" text = "表示している記事番号: %s" %articleId return redirect(articles, year = "2045", month = "02")
注 - URLを生成する関数がまだあります。それは同じ方法でリダイレクトを使用します「reverse」メソッド(django.core.urlresolvers.reverse)。この関数はHttpResponseRedirectオブジェクトを返さず、URLと任意のパラメータを含むビューの文字列を単に含みます。