我正在創建 Django 應用程式。我們希望用戶在單擊按鈕時被重定向到新螢屏,但我們不希望對 URL 進行硬編碼。
我們有一個頂級螢屏,我們希望在用戶單擊級別螢屏上的按鈕后將其重定向到螢屏,但是,我們有多個級別螢屏,因此為級別螢屏的每個部分硬編碼每個 URL 是沒有意義的.
以下是 Level1 螢屏的視圖作為示例:
def level1(request):
return render(request, 'Levels/level/Welcome1.html')
如您所見,我們渲染了 Welcome1.html,但是,我們還有其他與級別 1 相關聯的歡迎螢屏,例如Welcome2.html和Welcome3.html。
這是級別 1 的 URL:
path('levels/level1/', views.level1, name = "level1")
同樣,對于每個級別(級別 1、級別 2)以及它們的所有子螢屏(例如 Welcome1、Welcome2)都有一個 URL 是沒有意義的。
我怎樣才能做到這一點,以便我可以將不同的螢屏與 URL 相關聯,而不必單獨呈現它們?
我不知道如何去做這個問題。我們正在從事大型專案,可以將部分預算提供給幫助解決問題的人。
uj5u.com熱心網友回復:
Django 有一個“決議器”,它允許您在 urls.py 中定義動態鏈接
例如,動態 url 可以是訪問 /media 檔案夾中不同圖片的一種方式。例如:主機/媒體/{?}。這不是您在 django 中撰寫它的方式,但這只是為了解釋動態 url 背后的邏輯。這種情況下的 {?} 將訪問媒體檔案夾中的任何檔案。有點像如果您從終端應用程式中獲取引數。
特別是在您的情況下,它看起來像這樣:
path('levels/level<int:num>/', views.levelHandler)
這將獲得在 level 之后寫入的任何整數,并將其作為引數傳遞給 levels 函式,您可以將其路由到腳本中的不同級別。
該函式可能如下所示:
def levelHandler(request, num=0):
if(num == 0): return level0(request)
if(num == 1): return level1(request)
...
這應該可以解決問題。如果我錯過了什么,我會編輯答案。試一試,告訴我進展如何
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/528609.html
下一篇:如何在標頭中發送http請求?
