这边声明一下,以下是参考官方文档来的。


新建项目

新建名为dimples的django项目

在其中建立一个名为astart的APP:

新建目录

#新建目录mkdirdimplescddimples新建虚拟环境

virtualenvenvenv\Scripts\activate在虚拟环境中安装依赖

pipinstalldjangopipinstalldjangorestframework新建项目

django-admin.pystartprojectdimples.cddimplesdjango-admin.pystartappastartcd..创建表

pythonmanage.pymigrate创建管理员

pythonmanage.pycreatesuperuser序列化

首先创建一个文件dimples/astart/serializers.py来编写序列化相关的代码:

fromdjango.contrib.auth.modelsimportUser,Groupfromrest_frameworkimportserializersclassUserSerializer(serializers.HyperlinkedModelSerializer):classMeta:model=Userfields=('url','username','email','groups')classGroupSerializer(serializers.HyperlinkedModelSerializer):classMeta:model=Groupfields=('url','name')

HyperlinkedModelSerializer: 建立超链接关系。

dimples/astart/views.py

编写视图文件

fromdjango.contrib.auth.modelsimportUser,Groupfromrest_frameworkimportviewsetsfromdimples.astart.serializersimportUserSerializer,GroupSerializerclassUserViewSet(viewsets.ModelViewSet):"""查看、编辑用户的界面"""queryset=User.objects.all().order_by('-date_joined')serializer_class=UserSerializerclassGroupViewSet(viewsets.ModelViewSet):"""查看、编辑组的界面"""queryset=Group.objects.all()serializer_class=GroupSerializer

ViewSets:封装许多常见的操作,减少重复代码。 保持代码的简洁以及逻辑的清晰。

dimples/urls.py:

fromdjango.conf.urlsimporturl,includefromrest_frameworkimportroutersfromdimples.astartimportviewsrouter=routers.DefaultRouter()router.register(r'users',views.UserViewSet)router.register(r'groups',views.GroupViewSet)#使用URL路由来管理我们的API#另外添加登录相关的URLurlpatterns=[url(r'^',include(router.urls)),url(r'^api-auth/',include('rest_framework.urls',namespace='rest_framework'))]

使用了ViewSets可以通过使用Router类来自动生成URL配置信息。

Settings

启用分页功能以及只有管理员能访问

INSTALLED_APPS=(...'rest_framework',)REST_FRAMEWORK={'DEFAULT_PERMISSION_CLASSES':('rest_framework.permissions.IsAdminUser',),'PAGE_SIZE':10}测试

Terminal中输入

python./manage.pyrunserver

使用命令行工具访问API

http-adimples:111111http://127.0.0.1:8000/users/

(venv)C:\Users\Administrator\PycharmProjects\dimples>http-adimples:111111http://127.0.0.1:8000/user/HTTP/1.0200OKAllow:GET,HEAD,OPTIONSContent-Length:91Content-Type:application/jsonDate:Wed,20Sep201711:31:17GMTServer:WSGIServer/0.1Python/2.7.13Vary:Accept,CookieX-Frame-Options:SAMEORIGIN{"groups":"http://127.0.0.1:8000/user/groups/","users":"http://127.0.0.1:8000/user/users/"}

确保登录状态下打开浏览器 127.0.0.1:8000/users/