J'ai une application qui vous permet de filtrer les données via 3 champs. J'essaye d'écrire un RegEx dans mon urls.py qui peut capturer plusieurs combinaisons sans avoir à écrire chaque combinaison possible c'est sa propre URL.Comment capturer plusieurs arguments en utilisant un seul RegEx dans mon urls.py Django?
Voici mon urls.py:
#urls.py
urlpatterns = patterns('',
# Uncomment the next line to enable the admin:
(r'^admin/', include(admin.site.urls)),
(r'(?P<key>\w*?)=(?P<value>\w*?)&|$', views.scriptFilter),
J'ai testé l'expression rationnelle ci-dessus à pythonregex.com et il semble capturer autant de paires clé/valeur que je peux jeter. Cependant, lorsque j'essaie de l'essayer dans mon application, Django ne renvoie qu'un jeu de requête basé sur la première paire, et ignore les autres paires.
Par exemple, si j'entre ceci: http://MYSITE/feature=1&session=1&
Django retourne les données en fonction de fonction = 1 seulement et ne tient pas compte session = 1.
Voici mon views.py:
#views.py
def scriptFilter(request, key, value):
if key == 'session':
sessionID = value
qs = models.Script.objects.filter(session=sessionID)
elif key == 'product':
productID = value
qs = models.Script.objects.filter(product=productID)
elif key == 'feature':
featureID = value
scriptFeature = models.Feature.objects.get(pk=featureID)
qs = models.Script.objects.filter(feature=scriptFeature)
else:
qs = models.Script.objects.all()
caseTotal = qs.aggregate(Sum('caseCount'))
scriptTotal = qs.aggregate(Count('subScriptName'))
featureTotal = qs.aggregate(Count('feature'))
return render_to_response('scripts.html', locals())
Je suis nouveau à Python Django & donc s'il vous plaît soyez gentil :) Toute aide serait vraiment apprécié.
@jordan: pourquoi cette réponse est-elle marquée comme wiki communautaire? –
Plus facile à modifier si des modifications doivent être apportées. Si ce n'est pas ce que wiki communautaire est, désolé et n'hésitez pas (celui qui a ce pouvoir) de le changer. –
Aucun problème avec votre choix, juste curieux :) –