Question

En PHP, je le ferais pour obtenir nom sous forme de tableau.

<input type"text" name="name[]" />
<input type"text" name="name[]" />

Ou si je voulais obtenir le nom sous forme de tableau associatif:

<input type"text" name="name[first]" />
<input type"text" name="name[last]" />

Quel est l’équivalent de Django pour de telles choses?

Était-ce utile?

La solution

Consultez la documentation QueryDict , en particulier l'utilisation de QueryDict.getlist ( clé) .

Puisque request.POST et request.GET dans la vue sont des instances de QueryDict, vous pouvez le faire:

<form action='/my/path/' method='POST'>
<input type='text' name='hi' value='heya1'>
<input type='text' name='hi' value='heya2'>
<input type='submit' value='Go'>
</form>

Ensuite, quelque chose comme ceci:

def mypath(request):
    if request.method == 'POST':
        greetings = request.POST.getlist('hi') # will be ['heya1','heya2']

Autres conseils

Désolé, mais Django possède un fichier utils.datastructures.DotExpandedDict. En voici un extrait:

>>> d = DotExpandedDict({'person.1.firstname': ['Simon'], \
        'person.1.lastname': ['Willison'], \
        'person.2.firstname': ['Adrian'], \
        'person.2.lastname': ['Holovaty']})
>>> d
{'person': {'1': {'lastname': ['Willison'], 'firstname': ['Simon']}, '2': {'lastname': ['Holovaty'], 'firstname': ['Adrian']}}}

La seule différence est que vous utilisez des points au lieu de crochets.

EDIT: Ce mécanisme a été remplacé par les préfixes de formulaire, mais voici l'ancien code que vous pouvez insérer dans votre application si vous souhaitez toujours utiliser ce concept:

Django ne fournit pas un moyen d’obtenir des tableaux associatifs (dictionnaires en Python) à partir de l’objet requête. Comme le soulignait la première réponse, vous pouvez utiliser .getlist () selon vos besoins, ou écrire une fonction pouvant prendre un QueryDict et le réorganiser à votre guise (en tirant la touche Paires / valeur si la clé correspond à un modèle clé [*] , par exemple).

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