鋒哥原創的Python?Web開發?Django5視頻教程:
2024版 Django5 Python web開發 視頻教程(無廢話版) 玩命更新中~_嗶哩嗶哩_bilibili2024版 Django5 Python web開發 視頻教程(無廢話版) 玩命更新中~共計25條視頻,包括:2024版 Django5 Python web開發 視頻教程(無廢話版) 玩命更新中~、第2講 Django5安裝、第3講 Django5創建項目(用命令方式)等,UP主更多精彩視頻,請關注UP賬號。https://www.bilibili.com/video/BV14Z421z78C/重定向稱為HTTP協議重定向,也可以稱為網頁跳轉,它對應的HTTP狀態碼為301、302、303、307、308。簡單來說,網頁重定向就是在瀏覽器訪問某個網頁的時候,這個網頁不提供響應內容,而是自動跳轉到其他網址,由其他網址來生成響應內容。
Django的網頁重定向有兩種方式:
第一種方式是路由重定向;
第二種方式是自定義視圖的重定向。
兩種重定向方式各有優點,前者是使用Django內置的視圖類RedirectView實現的,默認支持HTTP的GET請求;后者是在自定義視圖的響應狀態設置重定向,能讓開發者實現多方面的開發需求。
我們分別用實例來演示下這兩種方式:
路由重定向
路由重定向方式,我們用RedirectView實現,在urls.py里面,我們再加一個路由代碼:
path('redirectTo', RedirectView.as_view(url="index/"))
請求redirectTo,直接重定向到 index/ 地址
運行測試,請求:
http://127.0.0.1:8000/redirectTo
自動重定向到index,狀態是302。
自定義視圖重定向
更多的情況,我們平時開發用的是自定義視圖重定向,視圖代碼里,通過邏輯判斷,通過redirect方法來實現具體的頁面重定向,使用更加靈活。
我們改造下前面的views.py下的blog函數:假如id是0,重定向到錯誤靜態頁面。
def blog(request, id):if id == 0:return redirect("/static/error.html")else:return HttpResponse('id是' + str(id) + "的博客頁面")
static目錄下新建一個error.html文件
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
系統運行有問題!
</body>
</html>
當然你也可以項目根目錄下再新建一個目錄,比如common,然后 STATICFILES_DIRS 靜態資源文件集合里,加下 BASE_DIR / "common",把error.html放到common目錄下,我們也是可以通過static/請求地址訪問的。當然如果你覺得static/請求名稱不好,也可以修改 STATIC_URL 參數 比如 改成 common/ 也行,你就可以通過 common/ 也訪問你的靜態資源文件。
我們訪問
http://127.0.0.1:8000/blog/0
302狀態,自動跳轉到了error.html錯誤頁面。
訪問其他id是正常的。