2012-10-17 38 views
0

我是新來的Django,我有點困惑如何使用Django的url模式匹配。Django的url模式匹配顯示不同的網頁

這是我的意圖。我有4頁到一個網站。根據鏈接,他們將使用url來查找要呈現給用戶的信息。此外,該url知道用戶在哪個頁面上。

所以這個人會選擇一個基於鏈接的建築物。 然後這個人會選擇他們想要去的地板。 最後,這個人會選擇一個房間。

Ex。格式:aaa.com/buildingname/floornumber/roomnumber

step0 aaa.com/

第一步aaa.com/django/

第二步aaa.com/django/2/

步驟3 AAA .com/django/2/201

因此,根據url模式,網站應每次加載不同。

這是我應該如何使用url模式匹配?我真的想在這方面得到一些幫助。 url模式應該是什麼樣子?截至目前,我所能想到的只是將網址匹配到具有視圖的不同應用程序中。我只是不知道如何將它們連接在一起。

而我有一個MySQL數據庫的建築物,樓層和房間號。

在此先感謝大家。我感謝你的努力。

回答

1

定義URL模式指向不同的看法如下:

urlpatterns = patterns('your_app.views', 
        (r'^/(?P<building_name>\w+)/$','function1'), 
        (r'^/(?P<building_name>\w+)/(?P<floor>\d+)/$','function2'), 
        (r'^/(?P<building_name>\w+)/(?P<floor>\d+)/(?P<room>\d+)/$','function3'), 
        ) 

使用這種模式,它會調用不同的意見,並在每個視圖中,可以使用不同的模板。或者,如果您想使用相同的視圖功能,請檢查URL中的可用值並呈現您需要的任何模板。您可以在視圖中獲得URL值,如下所示:

def function1(request, building_name = None): 
    print building_name 

同樣,對於其他視圖也是如此。

1

如果你希望他們在同一個視圖中處理,可以將參數傳遞給了同樣的觀點,

r('/(?P<building>\w+)/','views.view1') 
r('/(?P<building>\w+)/(?P<flat>\w+)/','views.view1') 
r('/(?P<building>\w+)/(?P<flat>\w+)/(?P<room>\w+)/','views.view1') 

你的看法,

def view1(buidling="",flat="",room=""): 
return [] 
+0

感謝。這工作得很好!現在我的另一個擔憂是現在。它應該是一個視圖還是應該有多個具有不同視圖的應用程序?還是應該有一個應用程序可以提供不同的意見? 前MYAPP -app -views -buildingview -flatview -roomview 或 - 項目 -building_app -views -flat_app -views -room_app -views – user805981

+0

@ user805981取決於你的申請。儘管存在爭議,我仍然會做幾乎類似的任務,單一視圖的單個應用程序,並且它也變得通用。 –