使用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.4Python: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调用服务——下篇(编写API服务)
- Netty学习之旅------高仿Dubbo服务调用模型、私有协议实现、编码解码器使用实践
- ArcGIS API for javascript开发笔记(五)——GP服务调用之GP模型的发布及使用详解
- 设置环境变量实现使用“运行“快速打开QQ等程序
- ArcGIS API for javascript开发笔记(五)——GP服务调用之GP模型的发布及使用详解
- 学习笔记:使用Web Service Software Factory开发简易留言本服务以及Mobile调用实现-1.创建Service
- ArcGISServer Flex API 调用GP服务实现服务区分析(转帖)
- 【Tesseract-OCR】在VS2010环境下调用API方法---简单快速之总结
- ArcGIS API for Silverlight 使用GP服务实现要素裁剪功能
- 使用ADO.NET 实体数据模型实现SQL存储过程调用
- sae-django 使用storage服务实现文件上传保存
- 不使用VS.NET集成开发环境,调用微软的WebService注册服务
- 语义Web服务的API使用实例:OWL-S API结合matchmaker、推理机(Jena、Pellet)进行语义转换、匹配、组合及调用web服务
- linux下使用系统调用实现进程后台运行
- 使用VC++调用C#封装的DLL库实现Excel文件的操作(不用安装office软件环境)
- CXF之使用jaxws API 发布服务与进行客户端调用
- CXF之使用CXF API 发布服务与进行客户端调用
- ArcGIS API for Silverlight 使用GP服务实现要素裁剪功能
- ArcGIS API for Silverlight 调用GP服务准备---GP模型建立、发布、测试