Django - การเปลี่ยนเส้นทางหน้า
จำเป็นต้องมีการเปลี่ยนเส้นทางหน้าด้วยเหตุผลหลายประการในโปรแกรมประยุกต์บนเว็บ คุณอาจต้องการเปลี่ยนเส้นทางผู้ใช้ไปยังเพจอื่นเมื่อมีการดำเนินการบางอย่างเกิดขึ้นหรือโดยพื้นฐานแล้วเกิดข้อผิดพลาด ตัวอย่างเช่นเมื่อผู้ใช้เข้าสู่เว็บไซต์ของคุณเขามักจะถูกเปลี่ยนเส้นทางไปยังหน้าแรกหลักหรือไปที่แดชบอร์ดส่วนตัวของเขา ใน Django การเปลี่ยนเส้นทางทำได้โดยใช้วิธีการ 'เปลี่ยนเส้นทาง'
เมธอด 'เปลี่ยนเส้นทาง' ใช้เป็นอาร์กิวเมนต์: URL ที่คุณต้องการเปลี่ยนเส้นทางไปเป็นชื่อมุมมองสตริง A
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)
ลองเปลี่ยนมุมมองสวัสดีเป็นเปลี่ยนเส้นทางไปที่ djangoproject.com และ viewArticle ของเราเพื่อเปลี่ยนเส้นทางไปยัง '/ myapp / article' ภายในของเรา ในการทำเช่นนั้น 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 แบบเต็มไปยังเมธอด 'เปลี่ยนเส้นทาง' เป็นสตริงและสำหรับตัวอย่างที่สอง (มุมมอง viewArticle) 'เปลี่ยนเส้นทาง' วิธีใช้ชื่อมุมมองและพารามิเตอร์ของเขาเป็นอาร์กิวเมนต์
การเข้าถึง / myapp / สวัสดีจะแสดงหน้าจอต่อไปนี้ -
และเข้าถึง / myapp / article / 42 จะแสดงหน้าจอต่อไปนี้ -
นอกจากนี้ยังสามารถระบุได้ว่า 'การเปลี่ยนเส้นทาง' เป็นแบบชั่วคราวหรือถาวรโดยการเพิ่มพารามิเตอร์ถาวร = True ผู้ใช้จะไม่เห็นความแตกต่าง แต่เป็นรายละเอียดที่เครื่องมือค้นหานำมาพิจารณาเมื่อจัดอันดับเว็บไซต์ของคุณ
โปรดจำไว้ว่าพารามิเตอร์ 'ชื่อ' ที่เรากำหนดไว้ใน url.py ของเราในขณะที่แมป URL -
url(r'^articles/(?P\d{2})/(?P\d{4})/', 'viewArticles', name = 'articles'),
ชื่อนั้น (ที่นี่บทความ) สามารถใช้เป็นอาร์กิวเมนต์สำหรับวิธีการ 'เปลี่ยนเส้นทาง' จากนั้นการเปลี่ยนเส้นทาง 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 ใช้ในลักษณะเดียวกับการเปลี่ยนเส้นทาง วิธี 'ย้อนกลับ' (django.core.urlresolvers.reverse) ฟังก์ชันนี้ไม่ส่งคืนอ็อบเจ็กต์ HttpResponseRedirect แต่เป็นเพียงสตริงที่มี URL ไปยังมุมมองที่คอมไพล์ด้วยอาร์กิวเมนต์ที่ส่งผ่านใด ๆ