Puis-je utiliser un intergiciel pour conserver plusieurs choix sélectionnés par l'utilisateur entre les demandes de page?Utilisation du middleware Django pour vérifier les variables GET dans l'URL de la page en cours
J'ai plusieurs valeurs, à savoir l'année du véhicule, la marque, le modèle, la série, le style, la couleur et la transmission. Je souhaite que l'utilisateur puisse sélectionner un choix tout en gardant le choix précédemment sélectionné actif. Je ne veux pas utiliser de sessions pour cela car je veux que l'URL soit signable.
Je pensais à quelque chose comme:
def get_choices(self):
try:
return self.REQUEST["year"]
except (KeyError, ValueError, TypeError):
return 1
class ChoicesMiddleware(object):
def process_request(self, request):
.....
Je suis également pas sûr comment retourner tous les choix sous get_choices().
EDIT 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 Mon URLConf est comme ci-dessous:
(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'),
Ensuite, la vue est comme ci-dessous:
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.
Il est une vue de circonscrire la sélection d'un utilisateur à partir d'une grande base de données de véhicules ... afin que l'utilisateur commence par un choix, disons année, le dans la prochaine requête, si l'utilisateur sélectionne un style de corps spécifique, la requête combinera l'année précédemment sélectionnée avec le style de corps choisi ... et ainsi de suite ... Je pense que vous obtenez ce que je veux dire. Laissez-moi d'abord essayer votre réponse. – Stephen
J'ai essayé le code ci-dessus ... ça ne marche pas pour moi. Voir mon édition pour la façon dont je l'ai fait ... idéalement, je veux que cela fonctionne comme django-pagination, par exemple, préserve la valeur paginate_by – Stephen
Je ne vois aucune différence entre votre code et ma population dict :) Alors qu'est-ce qui ne fonctionne pas? – kibitzer