0

ミドルウェアを使用して、ユーザーが選択した複数の選択肢をページ リクエスト間で保持できますか?

車の年、メーカー、モデル、シリーズ、スタイル、色、トランスミッションなど、いくつかの値があります。以前に選択した選択肢をアクティブにしたまま、ユーザーが選択肢を選択できるようにしたいと考えています。URLをブックマーク可能にしたいので、これにセッションを使用したくありません。

私は次のようなことを考えていました:

def get_choices(self):
   try:
      return self.REQUEST["year"]
   except (KeyError, ValueError, TypeError):
      return 1

class ChoicesMiddleware(object):
  def process_request(self, request):
      .....

また、get_choices() の下にあるすべての選択肢を返す方法もわかりません。

編集1

def get_choices(self):
    user_choices = {}
    for key in ["year", "model", "make", "series", "style"]:
        user_choices[key] = self.REQUEST.get(key)

    return user_choices

class ChoicesMiddleware(object):
   def process_request(self, request):
      return get_choices(self)

EDIT 2 私の URLConf は次のとおりです。

(r'^inventory/(?P<year>\d{4})(?P<make>[-\w\s]+)
   (?P<model>[-\w\s]+)(?P<series>[-\w\s]+)(?P<body>[-\w\s]+)
   (?P<exterior>[-\w\s]+)(?P<interior>[-\w\s]+)
   (?P<transmission>[-\w\s]+)$', 'inventory'),

次に、ビューは次のとおりです。

def inventory(request, page_by=None, year=None, make=None, 
    model=None, series=None, body=None, interior=None, exterior=None, 
    transmission=None):

  #Initialize empty variable list.
  kwargs = {}

  if "year" in request.GET:
    year = request.REQUEST["year"]
    kwargs['common_vehicle__year__year__exact'] = year
  ....The rest of the vars are populated in the same way.
4

2 に答える 2

0

ユーザーの選択をGETパラメーターとしてURLに自動的に追加しますか?

ミドルウェアを介してGETリクエストパラメータをURLに追加できるとは思いません。

于 2009-12-14T06:30:33.080 に答える
0

それらをGETに保存できますが、問題ありません。dict 経由で戻ります。ユーザーの選択を維持するという部分が理解できませんでした。たとえば、年にいくつかのオプションを用意したいですか? 次に、値ではなく、GET に配列が必要です。しかし、値の場合は簡単です:

def get_choices(self):
    user_choices = {}
    for key in ["year", "model", "maker"]:
        user_choices[key] = self.REQUEST.get(key)
    return user_choices
于 2009-12-14T07:17:11.300 に答える