4

我一直在寻找这个问题,但找不到任何问题,如果重复,对不起。

我正在建立某种电子商务网站,类似于 ebay。当我尝试浏览“类别”和“过滤器”时出现的问题。例如。您可以浏览“监视器”类别。这将向您显示许多监视器,以及一些过滤器(与 ebay 完全相同)来应用它们。所以,你去“监视器”,然后你有过滤器,比如:

  • 类型:LCD-LED-CRT
  • 品牌:优派-LG-三星
  • 最大分辨率:800x600 - 1024x768

并且这些过滤器将附加到 URL 中,以下是示例,当您浏览监视器时,URL 可能类似于:

store.com/monitors

如果您应用“类型”过滤器:

store.com/monitors/LCD

“牌”:

store.com/monitors/LCD/LG

“最大分辨率”:

store.com/monitors/LCD/LG/1024x768

因此,总而言之,URL 结构类似于:

/category/filter1/filter2/filter3

我不知道该怎么做。问题是过滤器可以是可变的。我认为在视图中需要使用**kwargs,但我不太确定。

您知道如何捕获此类参数吗?

非常感谢!

4

3 回答 3

3

本,我希望这会对你有所帮助

网址.py

from catalog.views import catalog_products_view

urlpatterns = patterns(
    '',
    url(r'^(?P<category>[\w-]+)/$', catalog_products_view, name="catalog_products_view"),
    url(r'^(?P<category>[\w-]+)/(?P<filter1>[\w-]+)/$', catalog_products_view, name="catalog_products_view"),
    url(r'^(?P<category>[\w-]+)/(?P<filter1>[\w-]+)/(?P<filter2>[\w-]+)/$', catalog_products_view, name="catalog_products_view"),
    url(r'^(?P<category>[\w-]+)/(?P<filter1>[\w-]+)/(?P<filter2>[\w-]+)/(?P<filter3>[\w-]+)/$', catalog_products_view, name="catalog_products_view"),
)

视图.py

def catalog_products_view(request, category, filter1=None, filter2=None, filter3=None):
    # some code here

或者

def catalog_products_view(request, category, **kwargs):
    filter1 = kwargs['filter1']
    filter2 = kwargs['filter2']
    ....
    filterN = kwargs['filterN']
    # some code here
于 2011-12-09T07:14:06.940 回答
1

您可以将其添加到您的网址中:

url(r'^(?P<category>\w)/(?P<filters>.*)/$', 'myview'),

然后 myview 会得到类别和过滤器的参数。您可以在“/”上拆分过滤器并在过滤器表中搜索每个部分。

那有意义吗?

于 2011-12-08T15:38:39.050 回答
0

您打算如何确定要过滤的方面?您是否有每个类别的接受关键字列表?即服务器如何知道

/LCD/LG/

方法type=LCD, brand=LG

/LG/LCD

并不意味着type=LG, brand=LCD

您是否有任何理由不想使用 GET 参数,例如

.../search/?make=LD&size=42
于 2011-12-08T15:22:42.097 回答