Использование промежуточного программного обеспечения Django для проверки переменных GET в URL текущей страницы

Могу ли я использовать промежуточное ПО для сохранения нескольких выбранных пользователем вариантов между запросами страниц?

У меня есть несколько значений, а именно год выпуска автомобиля, марка, модель, серия, стиль, цвет и трансмиссия. Я хочу, чтобы пользователь мог выбирать, сохраняя при этом активный ранее выбранный выбор. Я не хочу использовать сеансы для этого, так как я хочу, чтобы 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)

РЕДАКТИРОВАТЬ 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.

2 ответа

Вы хотите автоматически добавлять в URL параметры пользователя в качестве параметров GET?

Я не думаю, что вы сможете добавить параметры запроса GET к URL через промежуточное программное обеспечение.

Вы можете хранить их в GET, там нет проблем. Вернуться через диктовку. Я не понял части о сохранении выбора пользователя - вы хотите иметь несколько вариантов на год, например? Тогда вам нужны массивы в GET, а не значения. Но для ценностей это просто:

def get_choices(self):
    user_choices = {}
    for key in ["year", "model", "maker"]:
        user_choices[key] = self.REQUEST.get(key)
    return user_choices
Другие вопросы по тегам