需求:获取书本数据
接口定义:
请求方式: GET
请求路径:/books/
请求参数:无
响应数据:返回书本数据
1.浏览器获得一个完整的html页面数据
2.后端有两大核心任务:
数据处理(从数据库获取数据,构建模板)
渲染页面
class BooksView(View):
def get(self, request):
提取参数
校验参数8
业务处理:
3.1获取数据库书本数据
books = BookInfo.objects.all()# 查询集
把数据填充到模板中
在djano里配置模板templates
3.2构建模板参数
data = {# 存储书本字典
‘books’: []
}
for book in books:
data[‘books’].append({
‘bititle’:book.title,
…
})
rend函数:渲染页面(动态数据+html模板= 完整的html页面)
return render(request, ‘index.html’, context = data)
index.html:
{% for book in books %}
书名:{{book.title}};出版日期:{{book.bpub_data}}{% endfor%}
返回响应
路由映射
re_path(r’^books/$’, view. BookInfo.as_views())
class BooksView(View):
def get(self, request):
提取参数
校验参数
业务处理:
3.1获取数据库书本数据
books = BookInfo.objects.all()# 查询集
把数据填充到模板中
在djano里配置模板templates
3.2构建模板参数
data = {# 存储书本字典
‘books’: []
}
for book in books:
data[‘books’].append({
‘bititle’:book.title,
…
})
后端直接返回数据
return Jsonresponse(data)
分离的是业务逻辑:数据处理和渲染页面
前后端不分离:
后端既负责数处理又负责渲染页面
前后端分离:
后端只负责数据处理
前段负责页面渲染
前后端分离的优点
1.减轻后端服务器压力,后端只需处理数据
2.一台后端可以适配多个前端(客户端)