web-dev-qa-db-fra.com

Que signifie request.method == "POST" dans Django?

J'utilise beaucoup cette chose dans mes vues, mais je veux savoir ce que cela signifie exactement.

Que se passe-t-il lorsque nous écrivons request.method == "GET" ou request.method == "POST"?

22
user2657599

Le résultat de request.method == "POST" est une valeur booléenne - True si la requête en cours d'un utilisateur a été effectuée à l'aide de la méthode HTTP "POST", de False sinon (cela signifie généralement HTTP "GET", mais il y a aussi d'autres méthodes).

Vous pouvez en savoir plus sur la différence entre GET et POST dans les réponses à la question qu'Alasadir vous a indiquée . En bref POST requêtes sont généralement utilisés pour les soumissions de formulaires - ils sont requis si le traitement d'un formulaire change l'état côté serveur (par exemple, ajoute un utilisateur à une base de données, dans le cas d'un formulaire d'enregistrement). GET est utilisé pour les requêtes HTTP normales (par exemple lorsque vous tapez une URL dans votre navigateur) et pour les formulaires qui peuvent être traités sans aucun effet secondaire (par exemple un formulaire de recherche).

Le code est généralement utilisé dans les instructions conditionnelles, pour faire la distinction entre le code de traitement d'un formulaire soumis et le code d'affichage d'un formulaire non lié:

if request.method == "POST":
    # HTTP Method POST. That means the form was submitted by a user
    # and we can find her filled out answers using the request.POST QueryDict
else:
    # Normal GET Request (most likely).
    # We should probably display the form, so it can be filled
    # out by the user and submitted. 

Et voici un autre exemple, tiré directement de Django , en utilisant Django Forms:

from Django.shortcuts import render
from Django.http import HttpResponseRedirect

def contact(request):
    if request.method == 'POST': # If the form has been submitted...
        form = ContactForm(request.POST) # A form bound to the POST data
        if form.is_valid(): # All validation rules pass
            # Process the data in form.cleaned_data
            # ...
            return HttpResponseRedirect('/thanks/') # Redirect after POST
    else:
        form = ContactForm() # An unbound form

    return render(request, 'contact.html', {
        'form': form,
    })
26
Ludwik Trammer

request.methodretourne le type de la méthode de requête qu'elle peut être GET,POST,PUT,DELETE etc. après le retour, vous le comparez avec votre chaîne. L'opérateur de comparaison fournit toujours une valeur booléenne (True or False).

Parfois, nous devons gérer la fonctionnalité en fonction du type de méthode demandé.

if request.method == "GET":
    # functionality 1
Elif request.method == "POST":
    # functionality 2
Elif request.method == "PUT":
    # functionality 3
Elif request.method == "DELETE":
    # functionality 4

pour la méthode de demande GET les données sont transmises avec l'url. pour la méthode de requête POST les données sont passées à l'intérieur du corps. En termes de méthode de sécurité, le type POST est meilleur.

11
Anjaneyulu Batta