目錄
一、安裝
pip install djangorestframework # rest framework框架
pip install coreapi pygments markdown # 自動化接口文檔
二、API接口
創建項目
django-admin startproject mysite
創建應用
python manage.py startapp rest_api
項目配置 settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework', #添加應用
'rest_api',
]
創建超級管理員
python manage.py createsuperuser
創建數據庫模型 /rest_api/models.py
from django.db import models
# Create your models here.
class Book(models.Model):
title = models.CharField(max_length=64)
price = models.DecimalField(max_digits=5, decimal_places=2)
class Meta:
db_table = 'old_boy_book'
verbose_name = '書籍'
verbose_name_plural = verbose_name
# 規範格式
def __str__(self):
return '《%s》' % self.title
創建模型後,執行數據庫遷移
python manage.py makemigrations # 生成數據庫遷移文件
python manage.py migrate # 執行數據庫遷移
後臺管理 /rest_api/admin.py
from django.contrib import admin
from . import models
# Register your models here.
# 將Book方法註冊到admin中
admin.site.register(models.Book)
運行
python manage.py runserver
Admin
從瀏覽器打開網址http://127.0.0.1:8000/admin/進入到後臺管理,添加你的數據
配置主路由 urls.py
from django.contrib import admin
from django.conf.urls import url, include
urlpatterns = [
url('^admin/', admin.site.urls),
url('^restApi/', include('rest_api.urls')), # 添加應用的路由地址,路由分發
]
配置應用下路由 /rest_api/urls.py
from django.conf.urls import url
from . import views #.表示當前應用
urlpatterns = [
url(r'^books/$', views.Book.as_view()),
url(r'^books/(?P<pk>.*)/$', views.Book.as_view())
]
編寫視圖 /rest_api/views.py
from rest_framework.views import APIView
from rest_framework.response import Response
class Book(APIView):
def get(self, *args, **kwargs):
pk = kwargs.get('pk')
if pk:
book_obj = models.Book.objects.get(pk=pk)
return Response({
'status': 0,
'msg': 'ok',
'results': {
'title': book_obj.title,
'price': book_obj.price
}
})
return Response('get ok')
def post(self, request, *args, **kwargs):
# url拼接參數:只有一種傳參方式就是拼接參數
print(request.query_params)
# 數據包參數:有三種傳參方式:form-data、urlencoding、json
print(request.data)
return Response('post ok')