django:从视图返回字符串

Posted

技术标签:

【中文标题】django:从视图返回字符串【英文标题】:django: return string from view 【发布时间】:2014-09-09 02:52:24 【问题描述】:

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

我有我的看法:

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

我不记得命令了。谢谢

【问题讨论】:

【参考方案1】:

根据documentation:

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

每个视图函数负责返回一个 HttpResponse 目的。

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

from django.http import HttpResponse

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

【讨论】:

【参考方案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")

【讨论】:

【参考方案3】:

不能直接发送字符串,但可以发送 JSON 对象:

from django.http import JsonResponse

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

然后处理它。例如,如果页面是由 AJAX 请求的,则使用 javascript

$.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

【讨论】:

【参考方案4】:

我们使用 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)    

【讨论】:

【参考方案5】:

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

【讨论】:

【参考方案6】:

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

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

from django.http import HttpResponse

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

【讨论】:

以上是关于django:从视图返回字符串的主要内容,如果未能解决你的问题,请参考以下文章

Django 定义视图函数

django-视图

Django从Javascript函数发布数据

django-视图函数的三种返回

DJango之视图层

DJango之视图层