Django-ページリダイレクト
Webアプリケーションでは、さまざまな理由でページのリダイレクトが必要です。特定のアクションが発生したとき、または基本的にエラーが発生した場合に、ユーザーを別のページにリダイレクトしたい場合があります。たとえば、ユーザーがWebサイトにログインすると、メインのホームページまたは個人のダッシュボードにリダイレクトされることがよくあります。Djangoでは、リダイレクトは「リダイレクト」メソッドを使用して実行されます。
'redirect'メソッドは引数を取ります:文字列としてリダイレクトされるURLビューの名前。
これまでのところ、myapp / viewsは次のようになっています-
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):
""" A view that display an article based on his 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が-に変わります。
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):
""" A view that display an article based on his 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)
上記の例では、最初にdjango.shortcutsからリダイレクトをインポートし、Djangoの公式ウェブサイトにリダイレクトするために完全なURLを文字列として「redirect」メソッドに渡し、2番目の例(viewArticleビュー)では「redirect」メソッドは、ビュー名とそのパラメーターを引数として受け取ります。
/ myapp / helloにアクセスすると、次の画面が表示されます-
/ myapp / article / 42にアクセスすると、次の画面が表示されます-
「permanent = True」パラメーターを追加することにより、「リダイレクト」が一時的であるか永続的であるかを指定することもできます。ユーザーには違いはありませんが、これらは検索エンジンがWebサイトのランキング時に考慮に入れる詳細です。
また、URLのマッピング中にurl.pyで定義した「name」パラメータを覚えておいてください-
url(r'^articles/(?P\d{2})/(?P\d{4})/', 'viewArticles', name = 'articles'),
その名前(ここでは記事)を「redirect」メソッドの引数として使用できます。その後、viewArticleリダイレクトを-から変更できます。
def viewArticle(request, articleId):
""" A view that display an article based on his ID"""
text = "Displaying article Number : %s" %articleId
return redirect(viewArticles, year = "2045", month = "02")
To −
def viewArticle(request, articleId):
""" A view that display an article based on his ID"""
text = "Displaying article Number : %s" %articleId
return redirect(articles, year = "2045", month = "02")
Note−URLを生成する機能もあります。リダイレクトと同じように使用されます。'reverse'メソッド(django.core.urlresolvers.reverse)。この関数はHttpResponseRedirectオブジェクトを返しませんが、渡された引数でコンパイルされたビューへのURLを含む文字列を返します。