我正在建立一个django网站,以展示儿童服装。您从概述页面开始,在该页面上您会看到所有衣服的清单。在侧栏中,您可以使用以下选项来优化搜索:
衣服用于:
男生
女孩
衣服在:
棉
羊毛
衣服尺寸:
56
62
68
74
80
86
92
98
104
110
116
颜色的衣服:
白色
黑色
红
绿色
蓝色
黄色
因此,假设用户对男孩的衣服感兴趣。她单击“男孩”,并在URL websitename.com/clothes/boys/
上获得了clothes_boys视图。在该页面的侧边栏列出了面料,尺寸和颜色的选项。然后,用户可以进一步下钻至例如/clothes/boys/cotton/56/white
,以获得所有可用的尺寸为56的白色棉布男孩服装的清单。
我有上述情况的正则表达式和视图。但是用户可以偏离路线,例如/clothes/red/wool/girls/92/
等。
我该如何捕获所有这些不同的情况,而不必手动编写大量的正则表达式和视图。
最佳答案
解决方案1:
使用/gender/type/size/color/
并具有未指定的某种保留值-假设na。因此,如果用户首先单击“红色”,则他将转到/na/na/na/red/
。这样,您只需要1个正则表达式,并且您的网址是一致的。
解决方案2:
为此使用GET参数。一切都在URL /clothes/
中,但是您可以指定/clothes/?gender=boys&size=55&color=red
等。在视图(request.GET['gender']
)中解析这些值很容易。在此解决方案中,未指定的值就是未指定的(例如在我的示例中为type)。
解决方案3:
使用Django-filter-它是实现解决方案2的可插入应用程序。
关于django - Django站点有很多下钻选项。如何有效地编写urls.py?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2174240/