English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Django ページリダイレクト

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と任意のパラメータを含むビューの文字列を単に含みます。