背景
urls在django中为路由,view为视图。通过在urls定义路由,到view里去访问达到前后端交互的目的。本文来说明哈几种在view中用于回传至前端的格式及常用使用场景。
几种格式的对比及使用场景
前提条件:
urls文件中需配置好路由
from django.conf.urls import url
from .import views
urlpatterns=[
url(
'home',
views.home,
name='home'
)]
render
使用场景:编写的html代码,直接渲染在网页上,不涉及复杂的数据处理时,可使用render
1.templates文件夹下创建home.html页面
2.views.py的定义对应的视图函数
from django.shortcuts import render
def home(request):
return render(request,'home.html')
访问127.0.0.1:8000/home可见home.html页面
若想简单修改哈前端html的部分字段,可调整代码如下:
from django.shortcuts import render
def home(request):
data = [1,2,3] // data数据类型包括列表/字典
return render(request,'home.html',{'data':data})
html使用 {{ }} 来获取数据,如<div>{{data}}</div>
注:render是将整个html字符串返回并渲染成网页
httpresponse
使用场景:涉及到复杂的数据处理,需要对前端发送的Ajax请求处理后的后端数据回传至js的时候需使用httpresponse,但需要注意值要使用json.dumps()处理
views.py的定义对应的视图函数
from django.http import JsonResponse,HttpResponse
import json
def home(request):
data = {'name':'zhangsan','age':18}
return HttpResponse(json.dumps(data))
注:此时返回并不是标准格式的json,而是Content-Type:text/html;要想获得标准的json格式,需修改代码为returnHttpResponse(json.dumps(data),content_type="application/json")
jsonresponse
使用场景:是HttpResponse的子类,内部强制做了json转换
views.py的定义对应的视图函数
from django.http import JsonResponse,HttpResponse
def home(request):
data = {'name':'zhangsan','age':18}
return JsonResponse(data) // 返回Json的数据格式