Django Rest Framework 3.3.2 开发 RESTful API

简介: Python Version:     2.7.10Django Version:     1.9REST framework 3.3.2安装pip install djangopip install djangorestframeworksettings.py INSTALLED_APPS中引入rest_frameworkINSTALLED_APPS = [    'dja

Python Version:     2.7.10
Django Version:     1.9
REST framework 3.3.2


安装

pip install django

pip install djangorestframework



settings.py INSTALLED_APPS中引入rest_framework

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app01',
    'rest_framework',
]


创建model, 修改mdels.py

class Book(models.Model):
   name=models.CharField(max_length=100)
   title=models.CharField(max_length=100)
   author=models.CharField(max_length=100)


创建serializers.py

from app01.models import *
from rest_framework import serializers

class BookSerializer(serializers.Serializer):

    name = serializers.CharField(max_length=100)
    title = serializers.CharField(max_length=100)
    author = serializers.CharField(max_length=100)
    
    def create(self, validated_data):
        return Book(**validated_data)

    def update(self, instance, validated_data):
        instance.email = validated_data.get('name', instance.name)
        instance.content = validated_data.get('title', instance.title)
        instance.created = validated_data.get('author', instance.author)
        return instance


restore_object() 3.0以上版本不支持已经被create()和update()方法代替,源码如下:

(
    'Serializer `%s.%s` has old-style version 2 `.restore_object()` '
    'that is no longer compatible with REST framework 3. '
    'Use the new-style `.create()` and `.update()` methods instead.' %
    (self.__class__.__module__, self.__class__.__name__)
)



创建基于类和函数的视图

from django.shortcuts import render_to_response
from django.http import HttpResponse
from app01.forms import *
from rest_framework.views import APIView
from app01.serializers import BookSerializer
from app01.models import *
from rest_framework.response import Response
from rest_framework import generics
from rest_framework import status

# Create your views here.

class BookList(APIView):
   def get(self,request,format=None):
      books=Book.objects.all()
      ser=BookSerializer(books, many=True)
      return Response(ser.data)

   def post(self,request,format=None):
      ser=BookSerializer(data = request.data)
      if ser.is_valid():
         ser.create(ser.validated_data).save()
         return Response(ser.data,status = status.HTTP_201_CREATED)
      return Response(ser.errors)

class BookDetail(APIView):
   def get(self,request,num,format=None):
      b=Book.objects.get(id=num)
      ser=BookSerializer(b)
      return Response(ser.data)

class GenericBookList(generics.ListCreateAPIView):
   queryset = Book.objects.all()
   serializer_class = BookSerializer
   def post(self,request,format=None):
      ser=BookSerializer(data = request.data)
      if ser.is_valid():
         ser.create(ser.validated_data).save()
         return Response(ser.data,status = status.HTTP_201_CREATED)
      return Response(ser.errors)

def index(request):
   return render_to_response('index.html')

def hello(request):
   if request.method == 'POST':
      form = BookForms(request.POST)
      if form.is_valid():
         data = form.cleaned_data
         title = data["title"]
         return HttpResponse(title)
   form = BookForms()
   return render_to_response('1.html', {'form':form})


urls.py配置

from django.conf.urls import url
from django.contrib import admin
from app01.views import *
urlpatterns = [
    url(r'^admin/', admin.site.urls),
   url(r'^$', index),
    url(r'^hello/$', hello),
    url(r'^book/$', BookList.as_view()),
    url(r'^genericbook/$', GenericBookList.as_view()),
    url(r'^book/(\d+)', BookDetail.as_view()),

]


APIView

wKioL1Z75vfQq6uPAABzO-cLj8Q983.png



generic通用视图

wKiom1Z755yiV9HXAABo7Ft4pkM974.png



RESTful Request:GET/PUT/DELETE/POST/HEAD/OPTIONS

POST请求被定义为创建“从属资源”(拥有父资源的资源) (add)

参考文章:

http://www.lifelaf.com/blog/?p=156


本文出自 “点滴积累” 博客,请务必保留此出处http://tianxingzhe.blog.51cto.com/3390077/1728016

目录
相关文章
|
5天前
|
安全 Java API
第7章 Spring Security 的 REST API 与微服务安全(2024 最新版)(上)
第7章 Spring Security 的 REST API 与微服务安全(2024 最新版)
24 0
第7章 Spring Security 的 REST API 与微服务安全(2024 最新版)(上)
|
10天前
|
安全 Java API
RESTful API设计与实现:Java后台开发指南
【4月更文挑战第15天】本文介绍了如何使用Java开发RESTful API,重点是Spring Boot框架和Spring MVC。遵循无状态、统一接口、资源标识和JSON数据格式的设计原则,通过创建控制器处理HTTP请求,如示例中的用户管理操作。此外,文章还提及数据绑定、验证、异常处理和跨域支持。最后,提出了版本控制、安全性、文档测试以及限流和缓存的最佳实践,以确保API的稳定、安全和高效。
|
12天前
|
小程序 前端开发 API
小程序全栈开发中的RESTful API设计
【4月更文挑战第12天】本文探讨了小程序全栈开发中的RESTful API设计,旨在帮助开发者理解和掌握相关技术。RESTful API基于REST架构风格,利用HTTP协议进行数据交互,遵循URI、客户端-服务器架构、无状态通信、标准HTTP方法和资源表述等原则。在小程序开发中,通过资源建模、设计API接口、定义资源表述及实现接口,实现前后端高效分离,提升开发效率和代码质量。小程序前端利用微信API与后端交互,确保数据流通。掌握这些实践将优化小程序全栈开发。
|
22天前
|
前端开发 Java API
构建RESTful API:Java中的RESTful服务开发
【4月更文挑战第3天】本文介绍了在Java环境中构建RESTful API的重要性及方法。遵循REST原则,利用HTTP方法处理资源,实现CRUD操作。在Java中,常用框架如Spring MVC简化了RESTful服务开发,包括定义资源、设计表示层、实现CRUD、考虑安全性、文档和测试。通过Spring MVC示例展示了创建RESTful服务的步骤,强调了其在现代Web服务开发中的关键角色,有助于提升互操作性和用户体验。
构建RESTful API:Java中的RESTful服务开发
|
26天前
|
XML JSON 安全
谈谈你对RESTful API设计的理解和实践。
RESTful API是基于HTTP协议的接口设计,通过URI标识资源,利用GET、POST、PUT、DELETE等方法操作资源。设计注重无状态、一致性、分层、错误处理、版本控制、文档、安全和测试,确保易用、可扩展和安全。例如,`/users/{id}`用于用户管理,使用JSON或XML交换数据,提升系统互操作性和可维护性。
18 4
|
27天前
|
机器学习/深度学习 前端开发 API
实现以图搜货功能,淘宝API开发实战分享
实现以图搜货功能,淘宝API开发实战分享
24 0
|
16天前
|
缓存 前端开发 API
API接口封装系列
API(Application Programming Interface)接口封装是将系统内部的功能封装成可复用的程序接口并向外部提供,以便其他系统调用和使用这些功能,通过这种方式实现系统之间的通信和协作。下面将介绍API接口封装的一些关键步骤和注意事项。
|
22天前
|
监控 前端开发 JavaScript
实战篇:商品API接口在跨平台销售中的有效运用与案例解析
随着电子商务的蓬勃发展,企业为了扩大市场覆盖面,经常需要在多个在线平台上展示和销售产品。然而,手工管理多个平台的库存、价格、商品描述等信息既耗时又容易出错。商品API接口在这一背景下显得尤为重要,它能够帮助企业在不同的销售平台之间实现商品信息的高效同步和管理。本文将通过具体的淘宝API接口使用案例,展示如何在跨平台销售中有效利用商品API接口,以及如何通过代码实现数据的统一管理。
|
1月前
|
安全 算法 API
产品经理必备知识——API接口
前言 在古代,我们的传输信息的方式有很多,比如写信、飞鸽传书,以及在战争中使用的烽烟,才有了著名的烽火戏诸侯,但这些方式传输信息的效率终究还是无法满足高速发展的社会需要。如今万物互联的时代,我通过一部手机就可以实现衣食住行的方方面面,比如:在家购物、远程控制家电、自动驾驶等等,背后都离不开我们今天要聊的API接口。
|
1月前
|
数据采集 JSON API
如何实现高效率超简洁的实时数据采集?——Python实战电商数据采集API接口
你是否曾为获取重要数据而感到困扰?是否因为数据封锁而无法获取所需信息?是否因为数据格式混乱而头疼?现在,所有这些问题都可以迎刃而解。让我为大家介绍一款强大的数据采集API接口。