Django REST framework快速起步

安装Django REST framework

  • 创建一个Django项目,名为tutorial,并且启动一个新的app名字叫quickstart

# Create the project directory
mkdir tutorial
cd tutorial

# Create a virtualenv to isolate our package dependencies locally
virtualenv env
source env/bin/activate  # On Windows use `env\Scripts\activate`

# Install Django and Django REST framework into the virtualenv
pip install django
pip install djangorestframework

# Set up a new project with a single application
django-admin.py startproject tutorial .  # Note the trailing '.' character
cd tutorial
django-admin.py startapp quickstart
cd ..

上述命令已经完成了django目录初始化

  • 首次同步数据库

在CentOS 5.11环境下,由于使用的是sqlite 3.3.6,则会出现以下报错

如果使用sqlite 3.8.11则不会出现该问题

这个报错在migrate and other commands fail with TypeError: 'NoneType' object has no attribute 'getitem' in schema.py说明:

Django 1.9使用sqlite3 v3.3.6时候会出现PRAGMA foreign_keys返回nothing,而不是0或者1。解决方法是修改 django/db/backends/sqlite3/schema.py

修改成

  • 创建一个名为admin用户,使用密码MyPass

序列化

这里定义一些序列化:创建一个新的模块名为tutorial/quickstart/serializers.py用于数据表现:

注意这里使用超链接HyperlinkedModelSerializer。可以使用主键和一些其他关系,不过超链接是一个良好的RESTful设计。

注意:这里如果没有使用from django.db import models,则会出现报错

视图

现在定义一些视图,编辑tutorial/quickstart/views.py添加如下

和编写多个视图不同,这里将所有共有特性统一存放到ViewSets的类中。

URLs

编写API URLs,则在 tutorial/urls.py

由于使用viewsets取代views,可以通过简单在一个router类注册viewsets,这样从API自动生成URLs conf。

如果需要更多API URLs,可以简单通过使用常规基于类的视图,并明确编写URL conf。

最后,包含默认的登陆和登出视图用于浏览API,中国是可选的,但是如果API要求授权并且希望使用可浏览的API,则非常有用。

设置

设置一些全局设置,开启页码,并且希望API只被admin用户访问,在设置 tutorial/settings.py

以上完成所有测试代码编写

测试API

运行程序

  • 访问APU

参考

Last updated

Was this helpful?