Django RESTful framework 学习记(一)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/FourLeafCloverLLLS/article/details/84940518

由于想做一个手机充电桩的项目, 而这个项目涉及数据库, 微信小程序, 而微信小程序需要后台给相应的api接口, 无奈的我api不会开发, 再此之前一直学了python, 而且用了django框架写过网站, 心想api不就是一个链接吗? 而网站也是一个链接, 只是返回的数据不一样, 我想api和网站间有联系吧, 后来进过百度, 知道了django就有框架专门写api, 那就是我接下来一段时间要学习的 Django RESTful framework了,  在b站上找了一个老男孩的视频, 就开始了我的api之旅.

先来介绍一下RESTful规范吧!

一: RESTful规范(建议)

     为什么说建议呢?  是因为如果不用这个规范, 也能开发出满足业务逻辑的api, 只是这个规范更加规范, 更加方便而已

1.RESTful概述

RESTful是目前最流行的一种互联网软件架构。它结构清晰、符合标准、易于理解、扩展方便,所以正得到越来越多网站的采用。

REST是Representational State Transfer的缩写,是Roy Thomas Fielding在他2000年的博士论文中提出的。其提出的设计概念和准则为:

1. 网络上的所有事物都可以抽象为资源

2. 每个资源都应该有唯一的标识(identifier),对资源的操作不会改变标识

3. 所有的操作都是无状态的

4. 使用标准方法(GET、POST、PUT、PATCH、DELETE)操作资源

2.RESTful规范

2.1 先说说第一点吧, 那就是规范中规定了不同的提交方法分别代表不同的操作数据库的方法, 我们知道数据库常见的是增删改查, 这就对应着数据提交方式: POST, DELETE, PUT, GET方法.

下面来进行举例说明吧, 我使用的是django2.0 python3.7版本.

先来看看fbv模式下的视图.至于怎么创建django工程, 环境搭建我就不说了, 直接看工程下的urls.py

from django.urls import path
from django.contrib import admin
from django.urls import path, include
from django.conf.urls import url
from api import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('api.urls')),
    url(r'^test_FBV/', views.test_FBV),
    url(r'^test_CBV/', views.test_CBV.as_view())
]

然后创建一个app  我的app的名字为api, 所以应该在api下的views.py下写相应的视图方法, 如下代码

from django.shortcuts import render

# Create your views here.
from rest_framework import viewsets
from .models import Student
from .serializers import StudentSerializers
from django.http import HttpResponse
from django.views import View
from django.views.decorators.csrf import csrf_exempt,csrf_protect

# Create your views here.


def test_FBV(request):

    if(request.method == 'POST'):
        return HttpResponse("增加数据")

    if (request.method == 'PUT'):
        return HttpResponse("更新数据")

    if (request.method == 'GET'):
        return HttpResponse("获得数据")

    if (request.method == 'DELETE'):
        return HttpResponse("删除数据")

接下来用RESTClient测试:

和预期想的一样, 其他的就不做测试了, 以下是基于CBV的代码:

from django.shortcuts import render

# Create your views here.
from rest_framework import viewsets
from .models import Student
from .serializers import StudentSerializers
from django.http import HttpResponse
from django.views import View
from django.views.decorators.csrf import csrf_exempt,csrf_protect

# Create your views here.


def test_FBV(request):

    if(request.method == 'POST'):
        return HttpResponse("增加数据")

    if (request.method == 'PUT'):
        return HttpResponse("更新数据")

    if (request.method == 'GET'):
        return HttpResponse("获得数据")

    if (request.method == 'DELETE'):
        return HttpResponse("删除数据")


class test_CBV(View):
    # 以get形式访问会执行get函数,一般情况下获取数据
    def get(self, *args, **kwargs):
        return HttpResponse('获得数据')

    # 以post形式访问的话会执行post函数,一般情况下发送数据
    def post(self, *args, **kwargs):
        return HttpResponse('增加数据')

    def delete(self, *args, **kwargs):
        return HttpResponse('删除数据')

    # 以post形式访问的话会执行post函数,一般情况下发送数据
    def put(self, *args, **kwargs):
        return HttpResponse('更新数据')

 来看看测试的结果:

详细的规范可以参考这个链接:http://www.runoob.com/w3cnote/restful-architecture.html

猜你喜欢

转载自blog.csdn.net/FourLeafCloverLLLS/article/details/84940518
今日推荐