Django apiPython

Django rest_framework 编写 API

2016-12-09  本文已影响475人  SingleDiego

要使用 ** rest_framework ** 首先要安装相关的库:

pip install djangorestframework

在这个例子中,我们创建一个书目的 API,首先创建一个 Django 项目,项目中创建一个名为:library 的 app,文件目录如下:

1.编辑 setting



编辑 setting.py 的 INSTALLED_APPS 部分,添加 library 和 rest_framework:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'library',
    'rest_framework', # 要使用rest_framework需要在这里添加上
]

如果你的 setting.py 里面没找到 REST_FRAMEWORK,加上以下部分:

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
        # 'rest_framework.authentication.SessionAuthentication',
        # 'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
        ),
    'DEFAULT_PERMISSION_CLASSES': (
        # 'rest_framework.permissions.IsAuthenticated',
        ),
}

2.编辑 model 和 admin



编辑 model.py 如下:

from django.db import models

# Create your models here.

class Book(models.Model):
    title = models.CharField(null=True, blank=True, max_length=50)
    author = models.CharField(null=True, blank=True, max_length=50)
    summary = models.TextField(null=True, blank=True)

    def __str__(self):
        return self.title

记得执行 makemigrations 和 migrate 两个命名。

然后编辑 admin.py 如下:

from django.contrib import admin
from library.models import Book  

admin.site.register(Book)  

创建超级用户后,在后台添加相关的书目信息:

3.创建 API



我们在 library 文件夹内新建一个文件 api,py,编辑该文件:

from library.models import Book

# 序列化器,把数据包装成类似字典的格式
from rest_framework import serializers

# 这两个模块把序列化后的数据包装成 api
from rest_framework.response import Response
from rest_framework.decorators import api_view

# 创建一个 Book 的序列化器
class BookSerializer(serializers.ModelSerializer):
    class Meta:
        model = Book  # 序列化的对象
        fields = '__all__'  # 序列化的属性
        # fields = ('title', 'author')  # 如果只需要序列化某几个属性可以用元组


@api_view(['GET'])  # 装饰器,使得 book 函数具有 api_view 的相关方法 
def book(request):
    book_list = Book.objects.all() # Book 的全部数据
    serializer = BookSerializer(book_list, many=True) # 序列化 Book 的数据
    return Response(serializer.data)

4.设置 URL



编辑 url.py:

from django.conf.urls import url
from django.contrib import admin
from library.api import book

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^api/book', book),
]

打开:http://127.0.0.1:8000/api/book ,可以看到 API 创建完成:

如果要返回 json,可以用:http://127.0.0.1:8000/api/book?format=json

上一篇下一篇

猜你喜欢

热点阅读