Подтвердить что ты не робот

Django: возвращает строку из представления

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

У меня есть мое мнение:

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

Я не помню эту команду. Благодаря

4b9b3361

Ответ 1

В соответствии с документацией:

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

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

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

from django.http import HttpResponse

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

Ответ 2

Вы не можете напрямую отправить строку, но вы можете отправить объект 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

мы используем 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)    

Ответ 4

Если вы создаете чат-бота или вам нужен этот ответ на пост-запрос на подтверждение - вы должны добавить декоратор, в противном случае 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")

Ответ 5

Согласно документации Django, Django использует объекты запроса и ответа для передачи состояния через систему.

Когда запрашивается страница, Django создает объект HttpRequest, который содержит метаданные о запросе. Затем Django загружает соответствующий вид, передавая HttpRequest в качестве первого аргумента функции вида. Каждое представление отвечает за возврат объекта HttpResponse.

from django.http import HttpResponse

def myview(request):
    text="return this string"
    return HttpResponse(text)

Ответ 6

urls.py

from django.contrib import admin
from django.urls import path
from . import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('about/',views.aboutview),
    path('',views.homeview),
]

views.py

from django.http import HttpResponse

def aboutview(request):
  return HttpResponse("<h1>about page</h1>")

def homeview(request):
  return HttpResponse("<h1>home page</h1>")