Django REST framework笔记一之简易JsonAPI搭建(可使用)

来源:互联网 发布:steam中mac游戏 编辑:程序博客网 时间:2024/06/14 07:54

参考
Django rest framework官网http://www.django-rest-framework.org/

文章可能有疏漏,具体请参考代码
源码地址 github:https://github.com/luojie1024/Django_Rest_Framework_Demo

本文需要有一定的Python和Django基础,需要预先安装Ubantu及其相关配置。

创建虚拟环境

//创建虚拟环境文件夹mkdir tutorialcd tutorial//创建虚拟环境(方便后期部署)virtualenv envsource env/bin/activate  # On Windows use `env\Scripts\activate`//安装Django和restframework框架virtualenvpip install djangopip install djangorestframework

安装mysql数据库

//没有安装的话迁移会出错pip install mysqlclientsudo apt-get install python3-dev libmysqlclient-dev

进入虚拟环境

joahluo@ubuntu:~/tutorial/env/local/bin$ source activate

这里写图片描述

创建应用(创建项目文件夹,进入文件夹)
本例在projecet07文件夹下创建项目

//创建项目django-admin.py startproject turorialcd tutorial

创建项目

//代码运行之后创建APP snippetsdjango-admin.py startapp snippets

代码运行之后

创建一个空的mysql数据库

mysql> create database restframework charset=utf8;

这里写图片描述

使用Pycharm打开自己的项目
在turorial/setting.py下加入APP,并且设置自己的数据库

INSTALLED_APPS = [    'django.contrib.admin',    'django.contrib.auth',    'django.contrib.contenttypes',    'django.contrib.sessions',    'django.contrib.messages',    'django.contrib.staticfiles',    'snippets',    'rest_framework',]
DATABASES = {    'default': {        'ENGINE': 'django.db.backends.mysql',        'NAME': 'restframework',        'PORT': '3306',        'HOST': 'localhost',        'USER': 'luojie',        'PASSWORD': '123456',    }}

在turorial/urls.py中配置url

from django.conf.urls import include, urlfrom django.contrib import adminfrom rest_framework import routersfrom snippets import apirouter = routers.DefaultRouter()router.register(r'users', api.UserViewSet)router.register(r'blogs', api.BlogViewSet)urlpatterns = [    url(r'^admin/', include(admin.site.urls)),    url(r'^', include(router.urls)),]

在snippet/models.py下配置相应的models
本例以blog做演示

from django.db import models# Create your models here.class Blog(models.Model):    title = models.CharField(max_length = 50 )    content = models.TextField()

在snippets 下创建api.py文件

from django.contrib.auth.models import Userfrom rest_framework import routers, serializers, viewsetsfrom snippets import modelsfrom rest_framework import responseclass UserSerializer(serializers.HyperlinkedModelSerializer):    class Meta:        model = User        fields = ('url','username','email','is_staff')class UserViewSet(viewsets.ModelViewSet):    queryset = User.objects.all()    serializer_class = UserSerializerclass BlogSerializer(serializers.HyperlinkedModelSerializer):    class Meta:        model = models.Blog        depth = 1         fields = ('url','title','content',)class BlogViewSet(viewsets.ModelViewSet):    queryset = models.Blog.objects.all()    serializer_class = BlogSerializer

生成迁移文件,并且完成迁移

python manage.py makemigrationspython manage.py migrate

在数据库中添加测试数据
这里写图片描述

运行服务器

python manage.py runserver 

进入到项目目录,运行服务

这里写图片描述

进入页面,选中blog api
这里写图片描述

接下来我们看到了我们在数据库中添加的数据所生成的Json
这里写图片描述

这里写图片描述


本例中使用的虚拟环境配置
这里写图片描述