django:从视图返回字符串

时间:2014-07-18 03:59:16

标签: python django django-views

我知道这是一个简单的问题,抱歉。我只想返回一个简单的字符串,没有模板。

我有我的观点:

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

我不记得这个命令。感谢

6 个答案:

答案 0 :(得分:68)

根据documentation

  

视图函数或简称视图只是一个Python函数   接受Web请求并返回Web响应。

     

每个视图函数负责返回一个HttpResponse   宾语。

换句话说,您的视图应返回HttpResponse实例:

from django.http import HttpResponse

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

答案 1 :(得分:3)

您无法直接发送字符串,但可以发送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

答案 2 :(得分: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)    

答案 3 :(得分:2)

如果您创建聊天机器人或需要在发帖请求时做出响应以进行确认-您应该添加装饰器,否则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")

答案 4 :(得分:0)

根据Django文档,Django使用请求和响应对象在系统中传递状态。

当请求页面时,Django创建一个HttpRequest对象,该对象包含有关请求的元数据。然后Django加载适当的视图,并将HttpRequest作为第一个参数传递给视图函数。每个视图负责返回一个HttpResponse对象。请执行以下操作

from django.http import HttpResponse

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

答案 5 :(得分:0)

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>")