曾几何时,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的更多相关文章

  1. Django学习系列13:Django ORM和第一个模型

    ORM—对象关系映射器,是一个数据抽象层,描述存储在数据库中的表,行和列.处理数据库时,可以使用熟悉的面向对象方式,写出更好的代码. 在ORM的概念中,类对应数据库中的表,属性对应列,类的单个实例表示 ...

  2. Django学习系列之django分页

    基本语法实例 from django.core.paginator import Paginator objects = Post.objects.filter(status='published') ...

  3. Django学习系列之Form基础

     Django学习系列之Form基础 2015-05-15 07:14:57 标签:form django 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追 ...

  4. Django学习系列6:使用selenium测试用户交互

    学习系列5中的单元测试有报错信息,这儿来编写functional_tests.py文件,扩充其中的功能测试 # File: functional_test.py # Author: Rxf # Cre ...

  5. Django学习系列5:为视图编写单元测试

    打开lists/tests.py编写 """向浏览器返回真正的HTML响应,添加一个新的测试方法""" from django.test i ...

  6. Python&Django学习系列之-激活管理界面

    1.创建你个人的项目与APP 2.填写你的数据库名称与数据库类型,这里使用内置的sqllite3 3.修改setting文件 a.将'django.contrib.admin'加入setting的IN ...

  7. Django学习系列之中间件

    中间件的定义 中间件是一个.一个的管道,如果相对任何所有的通过Django的请求进行管理都需要自定义中间件 中间件可以对进来的请求和出去的请求进行控制 中间件是一类 django请求生命周期 自定义中 ...

  8. Django学习系列之Form验证

    django表单基础 django表单分类 基于django.forms.Form:所有表单类的父类 基于django.forms.ModelForm:可以和模型类绑定的Form Form验证流程 定 ...

  9. Django学习笔记之Django中间件

    准备 我们在前面的课程中已经学会了给视图函数加装饰器来判断是用户是否登录,把没有登录的用户请求跳转到登录页面.我们通过给几个特定视图函数加装饰器实现了这个需求.但是以后添加的视图函数可能也需要加上装饰 ...

随机推荐

  1. Importing Swift into Objective-C

    Overview You can work with types declared in Swift from within the Objective-C code in your project ...

  2. Spring Boot 打包分离依赖 JAR 和配置文件

    <properties> <java.version>1.8</java.version> <project.build.sourceEncoding> ...

  3. 为了安全请不要随意在页面中设置validateRequest="false"

    为了安全请不要随意在页面中设置validateRequest="false" 分类: ASP.NET2009-04-12 17:24 531人阅读 评论(0) 收藏 举报 asp. ...

  4. vim跳转(一)

    参考资料:http://easwy.com/blog/archives/advanced-vim-skills-basic-move-method/ 在normal模式下使用如下命令 1.h, j, ...

  5. [Python3网络爬虫开发实战] 1.9.5-Scrapyrt的安装

    Scrapyrt为Scrapy提供了一个调度的HTTP接口,有了它,我们就不需要再执行Scrapy命令而是通过请求一个HTTP接口来调度Scrapy任务了.Scrapyrt比Scrapyd更轻量,如果 ...

  6. 配置Mysql审计

    mysql-audit.json:Mysql审计日志 插件下载地址: https://bintray.com/mcafee/mysql-audit-plugin/release/1.1.4-725#f ...

  7. Python之turtle库-小猪佩奇

    Python之turtle库-小猪佩奇 #!/usr/bin/env python # coding: utf-8 # Python turtle库官方文档:https://docs.python.o ...

  8. mybatis返回map类型数据空值字段不显示(三种解决方法)

    转http://blog.csdn.net/lulidaitian/article/details/70941769 一.查询sql添加每个字段的判断空 IFNULL(rate,'') as rate ...

  9. LeetCode 121. Best Time to Buy and Sell Stock (stock problem)

    Say you have an array for which the ith element is the price of a given stock on day i. If you were ...

  10. linux-NMON监控