您的位置:首页 > 编程语言 > Go语言

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

2017-06-05 16:29 1081 查看

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

什么是RESTful API

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

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

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

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

GET:获取资源

POST:新建(或者更新)资源

PUT:更新资源

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”,输入账号密码即可。



新增一名用户



新增一条博客

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐