理解 Django 中的相對路徑與絕對路徑

更新日期: 2024 年 11 月 24 日

在網頁開發中,URL 的設置是非常重要的一部分,特別是在使用 Django 等框架時。

本文將幫助新手理解「相對路徑」與「絕對路徑」的差異、它們的使用場景,以及如何在 Django 中配置和選擇適合的路徑策略。


什麼是相對路徑?

相對路徑的語法與含義

  • 語法:相對路徑不以 / 開頭,例如:resumes/new
  • 含義:路徑是相對於當前頁面的路徑,會根據當前頁面的位置進行解析。

相對路徑的使用場景

當你希望基於當前頁面的 URL 動態解析目標地址時,可以使用相對路徑。

範例

  1. 如果當前頁面的 URL 是 https://example.com/about/,相對路徑 resumes/new 會解析為: https://example.com/about/resumes/new
  2. 如果當前頁面的 URL 是 https://example.com/,相對路徑 resumes/new 會解析為: https://example.com/resumes/new

Django 中如何檢查路徑設置?

在 Django 中,檢查 URL 配置是判斷路徑的關鍵。

以下是常見的檢查步驟與範例:

  1. 檢查 mysite/urls.py
    主要負責網站的全域路由配置,例如:
# mysite/urls.py
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('resumes/', include('resumes.urls')),  # 將 resumes 應用的子路徑指向 resumes/urls.py
]
  1. 檢查應用內的 app/urls.py
    這是應用的子路徑設置,例如 resumes 應用的路徑配置:
# resumes/urls.py
from django.urls import path
from . import views

app_name = 'resumes'

urlpatterns = [
    path('new/', views.new_resume, name='new'),  # 新增 Resume 的路徑
    path('', views.index, name='index'),        # 首頁路徑
]

這些配置會決定 HTML 模板中的相對路徑如何解析。

例如,在 HTML 中:

<a href="new/">新增 Resume</a>

當前頁面 URL 是 https://example.com/resumes/ 時,會解析為:

https://example.com/resumes/new/

注意:在相對路徑中,添加斜線 new/ 是更精準的寫法,因為它清楚地表達了目標是資料夾或具體路徑的起始點。


絕對路徑的特性

絕對路徑的語法與行為

  • 語法:絕對路徑以 / 開頭,例如:/resumes/new/
  • 行為:無論當前頁面的 URL 是什麼,絕對路徑都會被解析為一個固定的地址。

範例比較

假設網站有以下兩個 URL:

https://example.com/resumes/
https://example.com/resumes/new
  1. 使用 絕對路徑 /resumes/new/
    • 無論當前頁面在哪裡,瀏覽器都會跳轉到: https://example.com/resumes/new/
  2. 使用 相對路徑 resumes/new/
    • 如果當前頁面是 https://example.com/resumes/,跳轉結果為: https://example.com/resumes/resumes/new/
    • 如果當前頁面是 https://example.com/,跳轉結果為: https://example.com/resumes/new/

推薦做法

為什麼選擇絕對路徑?

在 Django 或其他 Web 開發中,通常建議使用 絕對路徑,因為它不依賴於當前頁面的 URL,解析結果更加穩定,避免因路徑錯誤導致的跳轉問題。

直接使用絕對路徑範例

在 HTML 中,建議直接填入絕對路徑以保證穩定性:

<a href="/resumes/new/">新增 Resume</a>

以上語法會始終正確地跳轉到:

https://example.com/resumes/new/

結論

  • 相對路徑 適用於動態生成的子路徑,但需要謹慎處理上下文,並建議在路徑中添加斜線(如 new/)以提高準確性。
  • 絕對路徑 更加穩定,特別是在開發框架中,直接填入絕對路徑 /resumes/new/ 是更安全的選擇。

學會正確設置與使用路徑,是打造穩定與可維護網站的重要基礎!

Similar Posts

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *