我可以使用中间件在页面请求之间保留多个用户选择的选项吗?
我有几个值,即车辆年份、品牌、型号、系列、样式、颜色和传输。我希望用户能够选择一个选项,同时保持先前选择的选项处于活动状态。我不想为此使用会话,因为我希望 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.