曾几何时,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/

最新文章

  1. JS: How to detect my browser version and operating system using JavaScript?
  2. Cisco ASA intra-interface routing
  3. java-一个小练习
  4. C#学习笔记10:Try-catch的用法和引用类型、值类型整理
  5. 求和函数 sum详解
  6. 初涉JavaScript模式 (7) : 原型模式 【三】
  7. Pseudoprime numbers(POJ 3641 快速幂)
  8. js原生forEach、map与jquery的each、$.each的区别
  9. nginx多域名配置
  10. 11.Linux用户管理
  11. JAVA中事物以及连接池
  12. php.ini 文件中配置的意义注释
  13. 使用TransactionScope做分布式事务协调
  14. angular路由守卫
  15. 利用create-react-app结合react-redux、react-router4构建单页应用
  16. Socket编程实践(5) --TCP粘包问题与解决
  17. [svc]简单理解什么是rpc调用?跟restapi有何区别?
  18. Android 程序优化总结
  19. Luogu P3966 [TJOI2013]单词
  20. C# 防止content-type修改后上传恶意文件

热门文章

  1. node.js入门之二
  2. Java中文乱码处理
  3. 05EXtensible Stylesheet Language
  4. B2. Concurrent 线程池(Executor)
  5. vuex如何管理需要即时更新的全局变量
  6. DIV可编辑后,与限制输入及光标偏移的纠葛
  7. mysql批量插值
  8. 配置jdk环境变量和配置的作用
  9. 数组排序函数-php数组函数(一)
  10. Volume 1. Sorting/Searching(uva)