4

私はこの質問を探していましたが、見つかりませんでした。重複している場合は申し訳ありません。

私はebayに似たある種のeコマースサイトを構築しています。「カテゴリ」と「フィルタ」を閲覧しようとしたときに発生した問題。例えば。「モニター」カテゴリーを閲覧できます。それはあなたにたくさんのモニターとそれらを適用するためのいくつかのフィルター(ebayとまったく同じ)を表示します。したがって、「モニター」に移動すると、次のようなフィルターがあります。

  • タイプ:LCD-LED-CRT
  • ブランド:ViewSonic-LG-Samsung
  • 最大解像度: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

ベン、これがあなたのお役に立てば幸いです

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
于 2011-12-09T07:14:06.940 に答える
1

これをURLに追加できます:

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 に答える