Views
views,即视图,用于处理业务逻辑,整合前端请求、数据处理和响应。可以先看看我的另一篇文章进行了解:https://blog.csdn.net/weixin_43431593/article/details/107142415
获取请求数据
在views.py中,编写的内容是逻辑,而逻辑通过接口来实现。接口首先要处理的是请求,然后才决定返回哪些数据,因此,我们先获取各个请求方式的内容。
我们定义一个名为 current_datetime 的函数。这是一个视图函数。每个视图函数都将 HttpRequest对象作为第一个参数,通常名为 request 。
代码示例:
from django.http import JsonResponse
def delete_data(request, pk):
response = {}
if request.method == "DELETE":
try:
art = testmysql.objects.get(id=pk)
art.delete()
response["msg"] = "删除成功"
response["code"] = 200
return JsonResponse(response)
except:
return JsonResponse({"code": "500", "msg": "删除失败"})
当请求一个页面时,Django 把请求的 metadata 数据包装成一个 HttpRequest 对象,然后 Django 加载合适的 view 方法,把这个 HttpRequest 对象作为第一个参数传给 view 方法。任何 view 方法都应该返回一个 HttpResponse 对象。
HttpRequest 对象表示来自某客户端的一个单独的 HTTP 请求。HttpRequest 对象是 Django 自动创建的。
而HttpRequest 对象的属性,携带的就是请求的参数。
官方文档:https://docs.djangoproject.com/en/3.1/ref/request-response/
HttpRequest的属性有很多,比较常用的有以下几个:
# 新增数据采用的POST方法
def add_data(request):
if request.method == "POST":
req = json.loads(request.body)
# 获取数据采用的GET方法
def query_data(request, pk):
response = {} # 响应
if request.method == "GET":
print(pk)
# 更新数据采用的PUT方法
def update_data(request, pk):
if request.method == "PUT":
req = json.loads(request.body)
print(pk)
# 删除数据采用的delete方法
def delete_data(request, pk):
if request.method == "DELETE":
print(pk)
如上,是获取请求的方法,对比如下:
方法 | 比较 |
---|---|
POST | 通过body取数据 |
GET | 通过pk找到指定数据 |
PUT | 通过pk找到指定数据,并通过body获取数据后,更新指定数据 |
DELETE | 通过pk找到指定数据 |
从这里看,该框架获取数据真是相当简单,Django就是这么简单,和java的Spring框架一样。
处理请求数据
数据的处理过程,是比较麻烦的过程,如果真要处理的话,得自己写代码,如新增数据时,数据不能重复,需要先校验数据库数据,对比之后,如果有数据,则返回数据已存在,如果没数据,就插入数据。这样的逻辑,通过python代码即可实现。
只是,光是想想都觉得麻烦,后续我们通过rest_framework来处理该问题,使得框架使用更简单。
响应请求
即,使用HttpResponse返回数据。后续我们采用前后端分离的方式,通常返回json格式数据。