2012-10-17 35 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取决于你的申请。尽管存在争议,我仍然会做几乎类似的任务,单一视图的单个应用程序,并且它也变得通用。 –