首页 > 代码库 > Django学习系列之django restframework
Django学习系列之django restframework
曾几何时,Ajax已经统治了Web开发中的客户端,而REST成为web世界中最流行的架构风格(architecture style)。所以我们的选择变得很简单:前端ajax访问后端的RESTful API对资源进行操作
Django中有一些可选的REST framework,比如django-piston,django-tasypie。 但是我和google(呵呵,不好意思)推荐这个:Django REST framework
django-framework就是定义一个url,可以利用这个url去数据库中读数据,或者写数据
安装配置django-framework
安装django-framework
pip install djangorestframework
pip install markdown
pip install django-filter
在Project中配置django-framework
打开project的settings.py
INSTALLED_APPS = ( ... ‘rest_framework‘, ) REST_FRAMEWORK = { # Use Django‘s standard `django.contrib.auth` permissions, # or allow read-only access for unauthenticated users. ‘DEFAULT_PERMISSION_CLASSES‘: [ ‘rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly‘ #所有人都能访问API,有读写权限 ] }
实例一:编写一个API用来获取用户信息
在Madking的url.py里配置api的url
from assets import rest_urls as asset_urls urlpatterns = [ url(r‘^api/‘, include(asset_urls)), #api的入口url ]
在asset的rest_urls.py里注册并关联视图
from django.conf.urls import url, include from rest_framework import routers #导入rest_viewset,取个别名views from assets import rest_viewset as views #这个是rest_framework封装django 的routers router = routers.DefaultRouter() #将views里的UserViewSet和AssetViewSet注册进来 #用户请求http://127.0.0.1:8000/api/users/和http://127.0.0.1:8000/api/asset/就能获取到数据 router.register(r‘users‘, views.UserViewSet) router.register(r‘asset‘, views.AssetViewSet) urlpatterns = [ url(r‘^‘, include(router.urls)), url(r‘^api-auth/‘, include(‘rest_framework.urls‘, namespace=‘rest_framework‘)), #这个是API的认证,必须得登录才能请求API ]
在asset的rest_viewset.py里定义去数据库里查询数据
from rest_framework import viewsets from assets import models from assets import rest_serializers class UserViewSet(viewsets.ModelViewSet): queryset = models.UserProfile.objects.all() #去查询所有的数据 serializer_class = rest_serializers.UserSerializers #序列化(表现层,将数据按照一定格式返回给用户) class AssetViewSet(viewsets.ModelViewSet): queryset = models.Asset.objects.all() serializer_class = rest_serializers.AssetSerializer
在asset里的rest_serializers.py里定义
#导入表结构 from assets import models #导入serializer方法 from rest_framework import serializers #获取UserProfile表里的信息 class UserSerializers(serializers.ModelSerializer): class Meta: #指定数据库, model = models.UserProfile #指定返回给用户的具体表中的哪些字段 fields = (‘username‘,‘name‘) #获取Asset表里的信息 class AssetSerializer(serializers.ModelSerializer): class Meta: model = models.Asset depth=2 fields = (‘name‘, ‘sn‘,‘server‘,‘networkdevice‘)
测试
访问http://127.0.0.1:8000/api/能看到API
访问获取用户信息的API:http://127.0.0.1:8000/api/users/
Django学习系列之django restframework
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。