it-roy-ru.com

django: вернуть строку из вида

Я знаю, что это простой вопрос, извините. Я просто хочу вернуть простую строку, без шаблонов.

У меня есть мой взгляд:

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

Я не помню команду. Спасибо

37
Paul

Согласно документации :

Функция представления, или, если коротко, представление, это просто функция Python, которая принимает веб-запрос и возвращает веб-ответ. 

Каждая функция представления отвечает за возврат HttpResponse объект. 

Другими словами, ваше представление должно возвращать HttpResponse instance:

from Django.http import HttpResponse

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

Вы не можете отправить строку напрямую, но вы можете отправить объект JSON:

from Django.http import JsonResponse

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

Тогда обработайте это. С Javascript, например, если страница была запрошена AJAX:

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

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

3
ThePhi

мы используем HttpResponse для рендеринга данных

HttpResponse для визуализации текста

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

HttpResponse для отображения HTML

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

Если вы создаете чат-бота или вам нужен этот ответ на пост-запрос на подтверждение - вы должны добавить декоратор, в противном случае Django блокирует пост-запросы . Более подробную информацию вы можете найти здесь https://docs.djangoproject.com/en /2.1/ref/csrf/

Также в моем случае мне пришлось добавить 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