Question

some_view?param1=10&param2=20

def some_view(request, param1, param2):

est-ce possible dans Django?

Était-ce utile?

La solution

Vous pouvez toujours écrire un décorateur. Par exemple. quelque chose comme (non testé):

def map_params(func):
    def decorated(request):
        return func(request, **request.GET)
    return decorated

@map_params
def some_view(request, param1, param2):
    ...

Autres conseils

Je ne suis pas sûr qu'il est possible de l'obtenir pour les passer comme arguments à la fonction de vue, mais pourquoi ne peux pas vous accéder aux variables GET de request.GET? Étant donné que l'URL, Django aurait request.GET['param1'] être 10 et 20. Dans le cas contraire request.GET['param2'] être, vous auriez à venir avec une sorte d'expression régulière bizarre d'essayer de faire ce que vous voulez.

Je suis d'accord avec Paolo ... les choses après le « ? » sont des paramètres GET et devrait probablement être traitée comme telle. Cela dit, si vous voulez vraiment garder la définition de some_view () que vous avez dit dans la question, vous pourriez faire quelque chose comme:

from django.http import Http404
def some_view_proxy(request):
     if 'param1' in request.GET and 'param2' in request.GET:
         return some_view(request, request.GET['param1'],
                          request.GET['param2'])
     raise Http404

Ou vous pouvez simplement définir some_view () comme celui-ci et utiliser l'EEG params. Juste curieux, pourquoi voulez-vous que?

Au lieu de combattre Django, pourquoi ne pas demander que some_view / 10/20, puis mis en place urls.py pour extraire les arguments?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top