我正在建立一个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/

10-09 07:51