我是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数据库。
先谢谢大家。我感谢您的努力。
答案 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 []