django url模式匹配显示不同的页面

时间:2012-10-17 06:27:24

标签: django django-views django-urls

我是django的新手,我对如何使用django的url模式匹配感到困惑。

这是我的意图。我有4页到一个网站。根据链接,他们将使用URL查找要呈现给用户的信息。此外,网址还知道用户所在的页面。

因此,该人将根据链接选择建筑物。 然后,该人将选择他们希望继续进行的楼层。 最后,这个人会选择一个房间。

  

实施例。格式:aaa.com/buildingname/floornumber/roomnumber

     

step0 aaa.com /

     

step1 aaa.com/django/

     

step2 aaa.com/django/2/

     

step3 aaa.com/django/2/201

因此,基于网址格式,网站每次都应加载不同的内容。

这是我应该如何使用网址模式匹配?我真的很想得到一些帮助。网址模式应该是什么样的?截至目前,我所能想到的只是将网址与具有视图的不同应用匹配。我只是不知道如何将它们连接在一起。

我有一个包含建筑物,楼层和房间号的MySQL数据库。

先谢谢大家。我感谢您的努力。

2 个答案:

答案 0 :(得分: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 :(得分: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 []