Vues Django

couche de vue

Une fonction de vue, ou vue en abrégé, est une simple fonction Python qui accepte une requête web et renvoie une réponse web.

La réponse peut être une page HTML, une page d'erreur 404, une page de redirection, un document XML ou une image...

Quelle que soit la logique que la vue contient elle-même, elle doit renvoyer une réponse. Le code peut être écrit n'importe où, tant qu'il se trouve sous le répertoire Python ; il est généralement placé dans le fichier views.py du projet.

Chaque fonction de vue est responsable de renvoyer un objet HttpResponse, qui contient la réponse générée.

Il y a deux objets importants dans la couche vue : l'objet requête (request) et l'objet réponse (HttpResponse).


Objet de requête : objet HttpRequest (appelé objet requête)

Ce qui suit présente plusieurs attributs de requête couramment utilisés.

1、GET

Le type de données est QueryDict, un objet semblable à un dictionnaire qui contient tous les paramètres de HTTP GET.

S'il y a des clés en double, toutes les valeurs sont placées dans la liste correspondante.

Format de valeur :object.method。

get(): Renvoie une chaîne ; si la clé correspond à plusieurs valeurs, on récupère la dernière valeur pour cette clé.

Exemple

def example(request):
    name = request.GET.get("name")
    return HttpResponse('Name: {}'.format(name))

2、POST

Le type de données est QueryDict, un objet de type dictionnaire qui contient tous les paramètres de HTTP POST.

Couramment utilisé pour les formulaires ; l'attribut name de la balise label dans le formulaire correspond à la clé du paramètre, et l'attribut value correspond à la valeur du paramètre.

Format de valeur :object.method。

get(): Renvoie une chaîne ; si la clé correspond à plusieurs valeurs, on récupère la dernière valeur pour cette clé.

Exemple

def example(request):
    name = request.POST.get("name")
    return HttpResponse('Name: {}'.format(name))

3、body

Le type de données est un flux d'octets binaires, qui est le contenu du paramètre dans le corps brut de la requête. En HTTP, il est utilisé pour POST car GET n'a pas de corps de requête.

Il n'est pas couramment utilisé en HTTP, mais il est très utile lors du traitement de formats de messages non HTTP, tels que les images binaires, XML, JSON, etc.

Exemple

def example(request):
    name = request.body
    print(name)
    return HttpResponse("Example")

4、path

Obtient la partie chemin de l'URL ; le type de données est string.

Exemple

def example(request):
    name = request.path
    print(name)
return HttpResponse("Tutoriel d'exemple")

5. method

La façon d'obtenir la requête actuelle : le type de données est une chaîne de caractères, et le résultat est en majuscules.

Exemple

def example(request):
    name = request.method
    print(name)
    return HttpResponse("Example")


Objet de réponse : objet HttpResponse

L'objet de réponse se présente principalement sous trois formes : HttpResponse(), render(), redirect().

HttpResponse():Renvoie du texte ; le paramètre est une chaîne de caractères, et le contenu textuel est écrit dans la chaîne. Si le paramètre de type chaîne contient des balises HTML, il peut également être rendu.

Exemple

def example(request):
    # return HttpResponse("Exemple")
    return HttpResponse("<a href='/index.html'>Tutoriel pour débutants</a>")

render():Renvoie du texte ; le premier paramètre est request, le deuxième paramètre est une chaîne (nom de la page), et le troisième paramètre est un dictionnaire (paramètre optionnel, paramètres passés à la page : la clé est le nom du paramètre de la page, et la valeur est le nom du paramètre de views).

Exemple

def example(request):
    name ="Exemple"
    return render(request,"example.html",{"name":name})

redirect(): Redirection, saut vers une nouvelle page. Le paramètre est une chaîne, et le chemin de la page est renseigné dans la chaîne. Généralement utilisé pour sauter vers une nouvelle page après la soumission d'un formulaire.

Exemple

def example(request):
    return redirect("/index/")

render et redirect sont des wrappers construits au-dessus de HttpResponse :

  • render : ce qu'il renvoie au niveau sous-jacent est également un objet HttpResponse
  • redirect : ce dont il hérite au niveau sous-jacent est l'objet HttpResponse
autres extensions