我一直在寻找这个问题,找不到任何问题,抱歉,如果重复的话.
我正在建立某种电子商务网站,类似于ebay.当我试图浏览“类别”和“过滤器”时,我出现了问题.例如.您可以浏览“监视”类别.这将显示许多监视器和一些过滤器(与ebay完全相同)来应用它们.所以,你去“监视器”,然后你有过滤器,如:
>类型:LCD – LED – CRT
>品牌:ViewSonic – LG – 三星
>最大分辨率:800×600 – 1024×768
并且这些过滤器将附加到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但我不太确定.
你知道如何捕获这种参数吗?
非常感谢!
解决方法:
本,我希望这会对你有所帮助
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