Django REST Framework(一) 初步使用
来源:互联网 发布:中国是否允许持枪知乎 编辑:程序博客网 时间:2024/05/29 02:22
介绍
Django REST framework 是一个强大且灵活的工具包,用以构建Web APIs。
为什么要使用REST framework?
- 在线可视的API,对于赢得你的开发者们十分有用
验证策略涵盖了OAuth1a和OAuth2
同时支持ORM和非ORM数据源的序列化
可以配置各个环节,若无需更多强大的特性,使用一般基于方法(function-based)的视图(views)即可
大量的文档,强力的社区支持
大公司如同Mozilla和Eventbrite,也是忠实的使用者
1. 配置要求
REST framework 有以下的要求:Python (2.7, 3.2, 3.3, 3.4, 3.5, 3.6)Django (1.7+, 1.8, 1.9, 1.11)下面是可选的包:Markdown (2.1.0+) - Markdown为可视化 API 提供了支持.django-filter (0.9.2+) - 过滤支持.django-crispy-forms - 为过滤,提供了改良的HTML呈现.django-guardian (1.1.1+) - 对象层面的权限支持.
2. 安装部署
pip install djangorestframework将 'rest_framework' 添加到你的 'INSTALLED_APPS' 设置里INSTALLED_APPS = ( ... 'rest_framework',)如果你需要使用可视化的API,你也许就需要添加REST Framework的登陆/登出视图。在项目的 urls.py文件里,添加下面的内容:urlpatterns = [ ... url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))]
3. 示例
让我们看一个简单用例:如何用REST framework 来搭建一个简单的支持modle的API
我们将创建一个读/写API,来处理我们项目中的用户信息。
任何REST framework的全局设置,都存放在一个配置字典中,名为REST_FRAMEWORK。
我们从以下的操作开始,把下面的内容添加到项目的settings.py模块中:
REST_FRAMEWORK = { # 使用Django的标准`django.contrib.auth`权限管理类, # 或者为尚未认证的用户,赋予只读权限. 'DEFAULT_PERMISSION_CLASSES': [ 'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly' ]}
这是项目目录下urls.py模块:from django.conf.urls import url, includefrom django.contrib.auth.models import Userfrom rest_framework import routers, serializers, viewsets# Serializers定义了API的表现.class UserSerializer(serializers.ModelSerializer): class Meta: model = User fields = ('username', 'email', 'is_staff')# ViewSets 定义了 视图(view) 的行为.class UserViewSet(viewsets.ModelViewSet): queryset = User.objects.all() serializer_class = UserSerializer# Routers 提供了一种简单途径,自动地配置了URL。router = routers.DefaultRouter()router.register(r'users', UserViewSet)# 使用自动的URL路由,让我们的API跑起来。# 此外,我们也包括了登入可视化API的URLs。urlpatterns = [ url(r'^', include(router.urls)), url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))]启动项目 python manage runserver 8000 浏览器 http://127.0.0.1:8000/里,打开新建的’users’ API了使用右上角的登陆控制,可以对系统用户进行新增和删除操作
上面的是官网中的 把所有的都写在了urls中 下面的是自己的分开写的方法
在app下创建一个serializers.py 文件 主要就是来写 需要写序列化的model的
from django.contrib.auth.models import Userfrom .models import UserProfile, Contentfrom rest_framework import serializers# Serializers定义了API的表现形式.class UserSerializer(serializers.ModelSerializer): # 使用ModelSerializer 来序列化model层 """序列化user模型""" class Meta: model = User # 指定要序列化的模型 fields = ('username', 'email', 'is_staff') # 指定要序列化的字段class UserProfileSerializer(serializers.ModelSerializer): """序列化userprofile 模型""" class Meta: model = UserProfile fields = ('age', 'image')class ContentSerializer(serializers.ModelSerializer): """content 模型""" class Meta: model = Content fields = ('name', 'age', 'image')
在app下创建一个restful_views.py 文件 主要就是用来存放视图类的
一个视图类对应了一个序列化的modelfrom rest_framework import viewsetsfrom .serializers import UserSerializer, UserProfileSerializer, ContentSerializerfrom django.contrib.auth.models import Userfrom .models import UserProfile, Content# ViewSets 定义了 视图(view) 的行为.class UserViewSet(viewsets.ModelViewSet): queryset = User.objects.all() # 把数据取出来 交给 制定的序列化对象去序列化数据 serializer_class = UserSerializerclass UserProfileViewSet(viewsets.ModelViewSet): queryset = UserProfile.objects.all() serializer_class = UserProfileSerializerclass ContentViewSet(viewsets.ModelViewSet): queryset = Content.objects.all() serializer_class = ContentSerializer
在app下创建一个restful_urls.py 文件 主要就是用来存放url映射的
from django.conf.urls import include, urlfrom rest_framework import routersfrom .restful_views import UserViewSet, UserProfileViewSet, ContentViewSet# Routers 提供了一种简单途径,自动地配置了URL。router = routers.DefaultRouter() # 创建router实例router.register(r'users', UserViewSet) # 注册一个url 然后对应上我们自己写的类视图函数router.register(r'profile', UserProfileViewSet) router.register(r'content', ContentViewSet) # 使用自动的URL路由,让我们的API跑起来。# 此外,我们也包括了登入可视化API的URLs。urlpatterns = [ url(r'^', include(router.urls)), # django封装了自己的url url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')) # 用于前端的用户认证]
在把自定义的restful_urls 和app下面的urls进行关联 这样django能知道restful_urls的位置
from django.conf.urls import url, includefrom restful import viewsurlpatterns = [ # url(r'^restful', views.index, name='restful'), url(r'^api/', include('restful.rest_urls', namespace='api')),]
阅读全文
0 0
- Django REST Framework(一) 初步使用
- Django Rest Framework(一)
- Django Rest framework学习(一)
- django-rest-framework序列化的使用(一)
- Django REST framework使用案例
- django rest framework使用django-filter
- Django REST framework教程一:序列化
- Django rest framework 使用自定义认证方式
- django-rest-framework过滤器的使用(三)
- Django REST framework笔记一之简易JsonAPI搭建(可使用)
- Django REST framework
- Django REST framework API
- Django REST framework
- Django-Rest-Framework 教程
- django rest framework Serializer
- Django Rest Framework
- django rest framework quickstart
- Django rest framework
- 基于UDP广播的回射服务器
- C++继承详解:共有(public)继承,私有(private)继承,保护(protected)继承
- CSDN-markdown编辑器模板
- CSS3 DIV自适应宽度、水平居中的实现方法
- Huffman
- Django REST Framework(一) 初步使用
- Cygwin安装及Cmdstan-2.16.0在Cygwin下的使用
- 弹出呼叫电话号码
- (Kattis
- 广播中的信号引起的竞争状态
- js实现的哈夫曼编码
- ccf csp认证中间数java代码
- tcp 与 udp
- Java中的String和Integer