93 votes

Django - prise de valeurs à partir d'une requête POST

J'ai le modèle django suivant (http://IP/admin/start/ est attribué à une vue hypothétique appelée view) :

{% for source in sources %}
  <tr>
    <td>{{ source }}</td>

    <td>
    <form action="/admin/start/" method="post">
      {% csrf_token %}
      <input type="hidden" name="{{ source.title }}">
      <input type="submit" value="Start" class="btn btn-primary">
    </form>
    </td>

  </tr>
{% endfor %}

sources est le objects.all() d'un modèle Django référencé dans la vue. Chaque fois que l'on clique sur l'entrée de soumission "Start", je veux que la vue "start" utilise l'objet {{ source.title}} dans une fonction avant de renvoyer une page rendue. Comment puis-je rassembler les informations POSTées (dans ce cas, dans l'entrée cachée) dans des variables Python ?

168voto

jdi Points 38029

Découvrez les objets de requête que vos vues reçoivent : https://docs.djangoproject.com/en/dev/ref/request-response/#httprequest-objects

Votre champ caché a également besoin d'un nom fiable, puis d'une valeur :

<input type="hidden" name="title" value="{{ source.title }}">

Puis dans une vue :

request.POST.get("title", "")

15voto

dm03514 Points 20748

Si vous devez faire quelque chose sur le front-end, vous pouvez répondre à l'événement onsubmit de votre formulaire. Si vous vous contentez d'envoyer des messages à admin/start, vous pouvez accéder aux variables post dans votre vue par le biais de l'objet request. request.POST qui est un dictionnaire de variables post.

4voto

Irfan wani Points 1444

Pour les formulaires django, vous pouvez faire cela ;

form = UserLoginForm(data=request.POST) #getting the whole data from the user.
user = form.save() #saving the details obtained from the user.
username = user.cleaned_data.get("username") #where "username" in parenthesis is the name of the Charfield (the variale name i.e, username = forms.Charfield(max_length=64))

1voto

Akshat Sharma Points 11

Vous pouvez utiliser :

request.POST['title']

il récupérera facilement les données portant ce titre.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X