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:从视图返回字符串的主要内容,如果未能解决你的问题,请参考以下文章