咱们先选择一个APP,好比说我选择的是schools APP,如何在设计这个APP中设计一个API接口,且在前端请求的时候,返回数据库中全部学校的详细信息呢?html
url(r'^school/', include('schools.urls', namespace='schools'))
url(r'^all/$', AllSchoolsView.as_view(), name='all')
编写AllSchoolsView类
;from django.views.generic.base import View import json from django.core.serializers import serialize from django.http import HttpResponse, JsonResponse from .models import School class AllSchoolsView(View): def get(self, request): schools = School.objects.all() # 直接将数据库中的QuerySet对象转换为json数据格式 goods_json = serialize('json', schools) print(type(goods_json)) print('serialize: --------{}'.format(goods_json)) return HttpResponse(content=goods_json, content_type='application/json')
from django.db import models from datetime import datetime class School(models.Model): name = models.CharField(max_length=50, verbose_name='学校名称') desc = models.CharField(max_length=100, verbose_name='学校描述') location = models.CharField(max_length=100, verbose_name='学校位置') create_time = models.DateTimeField(default=datetime.now, verbose_name='添加时间') course_numbers = models.IntegerField(default=0, verbose_name="课程数")
建立数据库表前面的文章也讲过,这里就不讲了,数据库表建立好了以后咱们能够往里面增长数据,可使用命令行添加,可是这样比较麻烦,因此这里咱们数据库管理和设计工具Navicat(文章最后介绍),使用这个工具咱们能够手动增长修改数据库表中的数据,特别方便; 首先须要选择一个待使用的数据库,我使用的是MySql,而后建立链接,再填写一下选项就能够了:前端
http://127.0.0.1:8000/schools/all/
;pip install djangorestframework pip install markdown # Markdown support for the browsable API. pip install django-filter # Filtering support
INSTALLED_APPS = ( 'rest_framework', )
url(r'^api-auth/', include('rest_framework.urls'))
第四步:建立Django的管理员,选择Tool->Run manage.py Task
,而后执行createsuperuser
,编辑本身的用户名、邮箱和密码就能够了;数据库
第五步:在schools APP中建立serializer.py
文件,在这个文件中导入serializers模块
,而后建立一个序列化类(本身命名),让这个类继承serializers模块
下的Serializer类;django
from rest_framework import serializers class SchoolSerializer(serializers.Serializer): name = serializers.CharField() course_numbers = serializers.IntegerField()
from .models import School from rest_framework.views import APIView from rest_framework.response import Response from .serializer import SchoolSerializer class AllSchoolsView(APIView): def get(self, request): schools = School.objects.all() # many表示返回一个list, 若是不设置,则返回一个 schools_serializer = SchoolSerializer(schools, many=True) return Response(schools_serializer.data)
Navicat是一套可建立多个链接的数据库管理工具,用以方便管理 MySQL、Oracle、 PostgreSQL、SQLite、SQL Server、MariaDB 和/或 MongoDB
等不一样类型的数据库,并 支持管理某些云数据库,例如阿里云、腾讯云;json
Navicat 提供了三种平台的版本Windows、macOS 、Linux
,可让用户链接到本地或远 程服务器,并提供一些实用的数据库工具以协助用户管理数据,包括 Navicat Cloud 协同合 做、数据建模、数据传输、数据同步、结构同步、导入、导出、备份、还原和自动运行;api
想了解更多用法能够查看官网,官网地址:https://www.navicat.com/en/浏览器
参考:https://www.9xkd.com/user/plan-view.html?id=7558399250服务器