python官方手册笔记_python学习笔记-Day024 - restful 官方文档

快速入门

我们将创建一个简单的API 用于admin用户,在系统中 查看和编辑用户和组信息.

创建项目

创建一个叫tutorial 的项目 , 然后创建一个app 叫 quickstart# 创建项目目录

mkdir tutorial

cd tutorial

################## 这里是非必须的 ################

# 创建一个虚拟环境,来隔离我们创建的包 的本地依赖,

virtualenv env

source env/bin/activate # On Windows use `env\Scripts\activate`

# 安装django 和django REST framework 到虚拟环境

pip install django

pip install djangorestframework

#############################################

# 创建一个新的项目 作为一个独立的程序

django-admin.py startproject tutorial . # Note the trailing '.' character

cd tutorial

django-admin.py startapp quickstart

现在同步数据库python manage.py makemigrations

python manage.py migrate

我们还将创建一个用户名为 admin初始用户,密码为 password123 .稍后我们会在我们的例子中验证我们的用户.python manage.py createsuperuser

一旦 建立数据库 并创建初始用户 这些你准备好了, 那么 打开app的目录, 我们要开始写代码了.....

Serialiazers ( 序列化器)

首先我们要定义一些序列化器, 让我们创建一个叫 tutorial/quickstart/serializers.py 的新模块.

代码如下:from django.contrib.auth.models import User, Group

from rest_framework import serializers

class UserSerializer(serializers.HyperlinkedModelSerializer):

class Meta:

model = User

fields = ('url', 'username', 'email', 'groups')

class GroupSerializer(serializers.HyperlinkedModelSerializer):

class Meta:

model = Group

fields = ('url', 'name')

注意:

在这个例子中,我们使用了超链接关系 -- HyperlinkedModelSerializer , 你也可以使用 primary key和其他各种关系. 不过 使用超链接 是比较好的 RESTful 设计方式.

views (视图)

好的, 现在我们最好写一些views了, 打开 tutorial/quickstart/views.py 然后输入如下内容:from django.contrib.auth.models import User, Group

from rest_framework import viewsets

from tutorial.quickstart.serializers import UserSerializer, GroupSerializer

class UserViewSet(viewsets.ModelViewSet):

"""

API endpoint that allows users to be viewed or edited.

"""

queryset = User.objects.all().order_by('-date_joined')

serializer_class = UserSerializer

class GroupViewSet(viewsets.ModelViewSet):

"""

API endpoint that allows groups to be viewed or edited.

"""

queryset = Group.objects.all()

serializer_class = GroupSerializer

与其写多个views ,不如把所所有的常见的行为进行分组,写到一个叫 ViewSet 的类里.

如果有需要我们,可以很容易的把这些分成独立的views ,但是使用 viewsets 可以保持view 逻辑的井井有条 和代码的清晰.

URLs

Okay, 现在我们向 tutorial/urls.py 文件中 配置 API URLs .from django.conf.urls import url, include

from rest_framework import routers

from tutorial.quickstart import views

router = routers.DefaultRouter()

router.register(r'users', views.UserViewSet)

router.register(r'groups', views.GroupViewSet)

# Wire up our API using automatic URL routing.

# Additionally, we include login URLs for the browsable API.

urlpatterns = [

url(r'^', include(router.urls)),

url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))

]

由于我们使用了viewsets 而不是views , 我们可以通过使用一个router类 简单的注册viewsets 来为我们的 API 生成 URL 配置.

同样,如果需要对API URLs进行更多的操作,可以使用 基于views 的普通类,并明确的写入URL 配置里.

最后,我们保留默认的登陆注销views,供可浏览的API来使用. 这个是可选的, 除非你的 API 需要 身份验证并且你想使用可 浏览的API

setting

我们还想设置一些全局配置 ,我们想打开分页功能, 希望我们的API仅可以被admin 用户连接,

需要设置的模块是: tutorial/settings.pyINSTALLED_APPS = (

...

'rest_framework',

)

REST_FRAMEWORK = {

'DEFAULT_PERMISSION_CLASSES': ('rest_framework.permissions.IsAdminUser',),

'PAGE_SIZE': 10

}

好了 ,到这里我们就做完了

测试我们的API

现在我们准更好了测试我们已经建立好的API ,从命令行启动我们的serverpython manage.py runserver

现在我们可以链接我们的api ,无论是命令行 还是像curl一样的工具bash: curl -H 'Accept: application/json; indent=4' -u admin:password123 http://127.0.0.1:8000/users/

{

"count": 2,

"next": null,

"previous": null,

"results": [

{

"email": "admin@example.com",

"groups": [],

"url": "http://127.0.0.1:8000/users/1/",

"username": "admin"

},

{

"email": "tom@example.com",

"groups": [ ],

"url": "http://127.0.0.1:8000/users/2/",

"username": "tom"

}

]

}

使用 命令行工具 httpiebash: http -a admin:password123 http://127.0.0.1:8000/users/

HTTP/1.1 200 OK

...

{

"count": 2,

"next": null,

"previous": null,

"results": [

{

"email": "admin@example.com",

"groups": [],

"url": "http://localhost:8000/users/1/",

"username": "paul"

},

{

"email": "tom@example.com",

"groups": [ ],

"url": "http://127.0.0.1:8000/users/2/",

"username": "tom"

}

]

}

直接通过浏览器访问

quickstart.png

通过浏览器使用时,确认你使用了右上角的登陆按钮进行了登陆

这里就可以说 so easyle

如果你想从头到尾更深入的了解REST framework 点击下面的链接:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值