django restframwork学习笔记:安装和配置

前后端分离

什么是前后端分离

程序角度:

1个django程序,接受请求 + 处理 + html模版 + 用户返回

2个程序:

前端:vue.js / react.js / angular.js

后端:django + django restframework

专业度角度来讲:

前端:专门写前端代码 + 部署 + 版本管理 + ajax请求获取

后端:API

APP或微信小程序:

前端:APP或者微信小程序

后端:API

什么是drf?作用是什么?

drf让我们以后写后端API接口时更方便

安装drf

1
2
3
pip install django
pip install djangorestframework

初步编写API

drf本质上是django的一个App,所以安装完以后要先注册才能使用

1
2
3
4
5
6
7
8
9
INSTALLED_APPS = [
"django.contrib.admin",
"django.contrib.auth",
"django.contrib.contenttypes",
"django.contrib.sessions",
"django.contrib.messages",
"django.contrib.staticfiles",
"app01.apps.App01Config",
]

路由

1
path('login/', views.login)

视图

1
2
3
4
5
from rest_framework.response import Response

@api_view(["GET"])
def login(request):
return Response({'status:True, 'message': "success"})

FBV和CBV

fbv就是基于函数的视图,cbv是基于类的视图,类似于面向过程和面向对象的感觉。

两者的区别其实只是一种现象,透过django的源代码我们能看出,其实二者实现的本质是一样的

我们后面开发一般都以cbv为主

CBV

CBV -> drf -> dispatch

请求对象和参数

1
2
3
4
5
6
7
8
9
10
11
12
13
django的request对象
request.method
request.GET
request.POST
request.body
request.FIELS

drf中的request参数,又进行了一层封装

class Request:
def __init__(self, request):
self._request = request
self...

创建项目

pycharm创建普通python项目,然后安装django,之后创建django项目
(因为笔者学习的时候要用低版本的django,实际上不需要指定django版本的话直接用pycharm创建django项目也可以,会默认创建新的版本)

创建django项目

创建一个专门写接口的app

因为是命令行安装的django,所以还要手动配置下server

然后安装下drf

1
pip install djangorestframework

然后注册一下drf

项目净化

django自带了一些app和组件,这里不需要,从settings里注视掉

测试

我们用个简单的代码测试下drf是不是弄好了

视图函数

1
2
3
4
5
6
from rest_framework.views import APIView
from rest_framework.response import Response

class UserView(APIView):
def get(self, request):
return Response("Hello World")

路由

1
2
3
4
5
6
7
from django.urls import path
from api import views

urlpatterns = [
# path("admin/", admin.site.urls),
path('user', views.UserView.as_view(), name='user'),
]

这里要注意的是,因为drf源码里会给分配一个匿名身份,所以这里我们要给它赋值None,不然会报错。

注意这里的语法,由于drf嵌套了一层,所以不能直接像修改django的设置一样写,要这样写代表修改drf设置

1
2
3
REST_FRAMEWORK = {
'UNAUTHENTICATED_USER': None
}

然后我们运行django,访问就可以看到如下界面,就没问题了

1
http://localhost:8000/user