使用Django REST Framework来快速实现API调用服务——上篇(运行环境和模型层)

使用Django REST Framework来快速实现API调用服务——上篇(运行环境和模型层)

 

什么是RESTful API

REST其实是短语——“Representational State Transfer”的缩写,中文翻译为“表现层状态转化”。这里的表现层指的是“资源”(Resources)的表现层,所谓资源就是网络上的一个具体信息,我们可以用一个URI(统一资源定位符)来指向它。

 
我们把“资源”具体呈现出来的形式叫做它的“表现层”,比如文本可以用txt、XML、JSON格式表现,图片可以用JPG、PNG格式表现。

 
由于HTTP是无状态协议,所有的状态都保存在服务器端。因此客户端必须通过某种手段让服务器端发生“状态转化”,而实际应用环境中这种转化常常是建立在表现层之上的(因为在服务器和客户端之间只能传递该资源的“表现层”),因此称之为“表现层状态转化”。

 
而在HTTP协议中有4个动词来代表基本操作:

  1. GET:获取资源
  2. POST:新建(或者更新)资源
  3. PUT:更新资源
  4. DELETE:删除资源

 
下面将展示如何使用Django REST Framework来实现一个获取博客后台信息的RESTful API服务。

 

运行环境说明

  • OS:deepin 15.4
  • Python:Python 3.5.2+
  • Django:1.11.2
  • django-filter: 1.0.4
  • djangorestframework: 3.6.3

 

安装必要的Python库

sudo pip3 install django
sudo pip3 install djangorestframework
sudo pip3 install django-filter

 

自动生成项目代码

# 项目名称为django_rest_framework_test
django-admin startproject django_rest_framework_test
cd django_rest_framework_test/

python3 manage.py startapp blog

# 目录结构
.
└── django_rest_framework_test
    ├── blog
    │   ├── __init__.py
    │   ├── admin.py
    │   ├── apps.py
    │   ├── migrations
    │   ├── models.py
    │   ├── tests.py
    │   └── views.py
    ├── django_rest_framework_test
    │   ├── __init__.py
    │   ├── settings.py
    │   ├── urls.py
    │   └── wsgi.py
    └── manage.py

 

编写模型的定义代码

# blog/models.py
from django.db import models

class User(models.Model):
    name = models.CharField(max_length=32)
    mail = models.EmailField()

class Entry(models.Model):
    STATUS_DRAFT = "draft"
    STATUS_PUBLIC = "public"
    STATUS_SET = (
            (STATUS_DRAFT, "草稿"),
            (STATUS_PUBLIC, "公开"),
    )
    title = models.CharField(max_length=128)
    body = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)
    status = models.CharField(choices=STATUS_SET, default=STATUS_DRAFT, max_length=8)
    author = models.ForeignKey(User, related_name='entries')

 

编写数据库的定义代码

下面将选择集成好的SQlite3作为数据库,对django_rest_framework_test/settings.py文件中的INSTALLED_APPS增加一个元素——’blog’。

# 基于当前的model创建新的迁移策略文件
python3 manage.py makemigrations
# 执行迁移动作
python3 manage.py migrate

这样在manage.py的目录下就生成了一个数据库文件db.sqlite3,这样以后都不用再写一句SQL语句。当然你也可以改用MySQL或者Postgres,只用修改settings文件中的DATABASES即可。

 

在浏览器上管理Django的模型

首先要在blog/admin.py文件中添加要进行管理的模型,如下:

from django.contrib import admin
from .models import User, Entry

@admin.register(User)
class UserAdmin(admin.ModelAdmin):
    pass

@admin.register(Entry)
class Entry(admin.ModelAdmin):
    pass
# 注册一个管理员账号
python manage.py createsuperuser
   Username (leave blank to use 'kimihiro_n'): dev
   Email address:
   Password:你的密码
   Password (again):你的密码
   Superuser created successfully.

# 启动服务器
python3 manage.py runserver

在浏览器的地址栏输入“http://localhost:8000/admin”,输入账号密码即可。
使用Django REST Framework来快速实现API调用服务——上篇(运行环境和模型层)_第1张图片
新增一名用户
使用Django REST Framework来快速实现API调用服务——上篇(运行环境和模型层)_第2张图片
新增一条博客
使用Django REST Framework来快速实现API调用服务——上篇(运行环境和模型层)_第3张图片

你可能感兴趣的:(Python)