我一直在寻找这个问题但找不到任何内容,抱歉,如果重复的话。
我正在构建某种类似于ebay的电子商务网站。当我试图浏览“类别”和“过滤器”时,我出现了问题。例如。您可以浏览“监视”类别。这将显示许多监视器和一些过滤器(与ebay完全相同)来应用它们。所以,你去“监视器”,然后你有像:
这样的过滤器这些过滤器将附加到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
,但我不太确定。
您是否知道如何捕获这类参数?
非常感谢!
答案 0 :(得分:3)
Ben,我希望这会对你有所帮助
<强> urls.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"),
)
<强> 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
答案 1 :(得分:1)
您可以将其添加到您的网址:
url(r'^(?P<category>\w)/(?P<filters>.*)/$', 'myview'),
然后myview将获得类别和过滤器的参数。您可以在“/”上拆分过滤器,并在Filters表中搜索每个部分。
这有意义吗?
答案 2 :(得分:0)
您打算如何决定过滤哪个方面?您是否有每个类别的已接受关键字列表?即服务器如何知道
/LCD/LG/
表示type=LCD, brand=LG
但是
/LG/LCD
不表示type=LG, brand=LCD
等
你有什么理由不想使用GET参数,例如
.../search/?make=LD&size=42