Django让web开发更简单(四):设计视图

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格式数据。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lion King

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值