web-dev-qa-db-fra.com

django: retourne la chaîne de la vue

Je sais que c'est une question simple, désolé. Je veux juste renvoyer une chaîne simple, pas de modèles.

J'ai mon avis:

def myview(request):
    return "return this string"

Je ne me souviens pas de la commande. Merci

37
Paul

Selon la documentation :

Une fonction de vue, ou vue courte, est simplement une fonction Python qui prend une requête Web et renvoie une réponse Web. 

Chaque fonction de vue est chargée de renvoyer une réponse HttpResponse objet. 

En d'autres termes, votre vue devrait renvoyer une HttpResponse instance:

from Django.http import HttpResponse

def myview(request):
    return HttpResponse("return this string")
67
alecxe

Vous ne pouvez pas envoyer directement une chaîne, mais vous pouvez envoyer un objet JSON:

from Django.http import JsonResponse

def myview(request):
    return JsonResponse({'mystring':"return this string"})

Puis traiter cela. Avec Javascript par exemple si la page a été demandée par AJAX:

$.ajax({url: '/myview/',    type: 'GET',
                            data: data,
                            success: function(data){ 
                                console.log(data.mystring);
                                ...
                                 }
                            })

https://docs.djangoproject.com/fr/1.11/ref/request-response/#jsonresponse-objects

3
ThePhi

nous utilisons HttpResponse pour rendre les données

HttpResponse pour rendre le texte

from Django.http import HttpResponse
def Index(request):
    return HttpResponse("Hello World")

HttpResponse pour rendre le code HTML

from Django.http import HttpResponse
    def Index(request):
        text = """<h1>Hello World</h1>"""
        return HttpResponse(text)    
3
vinodsesetti

Si vous créez un chat-bot ou si vous avez besoin de cette réponse après une demande de confirmation après publication, vous devez ajouter un décorateur, sinon, les demandes de publication de bloc Django . Plus d'infos disponibles ici https://docs.djangoproject.com/fr /2.1/ref/csrf/

Aussi, dans mon cas, j'ai dû ajouter content_type = "text/plain".

from Django.views.decorators.csrf import csrf_protect
from Django.http import HttpResponse
@csrf_exempt
def Index(request):
    return HttpResponse("Hello World", content_type="text/plain")
0
Alex Awaikin