Python学习打call第六十一天:Django REST Framework介绍

1.Django REST framework框架介绍

  • Django REST framework框架是一个功能强大且灵活的工具包,用于构建Web API,且Django Rest Framework 是 Django 依赖扩展 Restful Api 的框架,与Django的使用风格类似,它的官方网站是:https://www.django-rest-framework.org/

2.设计API

我们先选择一个APP,比如说我选择的是schools APP,如何在设计这个APP中设计一个API接口,且在前端请求的时候,返回数据库中所有学校的详细信息呢?

  • 第一步:首先需要在项目的urls.py文件(根路由)中添加二级路由;
url(r'^school/', include('schools.urls', namespace='schools'))
  • 第二步:在schools APP中的urls.py文件添加路由,指定访问路径,需要导入AllSchoolsView类,AllSchoolsView类是在view.py文件中编写,(记得执行makemigration 和 migrate操作)
url(r'^all/$', AllSchoolsView.as_view(), name='all')
  • 第三步:在schools APP中的views.py文件中,编写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')
  • 第四步:在schools APP中的models.py文件中,根据需求创建schools_school表;
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,然后创建连接,再填写一下选项就可以了:


1.png

2.png
3.png
  • 第五步:创建数据库中schools_school表的数据,可以通过Navicat来操作数据库,最后我们的数据库表示这样的:
    4.png
  • 第六步:运行项目,就能得到我们想要的json数据了,访问路径是http://127.0.0.1:8000/schools/all/

3.使用Django REST framework定制Restful API

  • 第一步:首先安装好需要用到的包;
pip install djangorestframework
pip install markdown       # Markdown support for the browsable API.
pip install django-filter  # Filtering support
  • 第二步:然后在项目的settings文件的INSTALLED_APPS中添加rest_framewor;
INSTALLED_APPS = (
    'rest_framework',
)
  • 第三步:在根路由urls.py中加一条路由,用于支持浏览器访问api认证;
url(r'^api-auth/', include('rest_framework.urls'))
  • 第四步:创建Django的管理员,选择Tool->Run manage.py Task然后执行createsuperuser,编辑自己的用户名、邮箱和密码就可以了;

  • 第五步:在schools APP中创建serializer.py文件,在这个文件中导入serializers模块,然后创建一个序列化类(自己命名),让这个类继承serializers模块下的Serializer类;

from rest_framework import serializers
class SchoolSerializer(serializers.Serializer):
    name = serializers.CharField()
    course_numbers = serializers.IntegerField()
  • 第六步:在schools APP中的views.py文件中重写AllSchoolsView类,重启服务器就能得到Django REST framework返回的数据了;
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)
5.png

4.Navicat

  • Navicat是一套可创建多个连接的数据库管理工具,用以方便管理 MySQL、Oracle、 PostgreSQL、SQLite、SQL Server、MariaDB 和/或 MongoDB 等不同类型的数据库,并 支持管理某些云数据库,例如阿里云、腾讯云;

  • Navicat 提供了三种平台的版本Windows、macOS 、Linux,可以让用户连接到本地或远 程服务器,并提供一些实用的数据库工具以协助用户管理数据,包括 Navicat Cloud 协同合 作、数据建模、数据传输、数据同步、结构同步、导入、导出、备份、还原和自动运行;

  • 想了解更多用法可以查看官网,官网地址:https://www.navicat.com/en/

参考:https://www.9xkd.com/user/plan-view.html?id=7558399250

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • # Python 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列...
    小迈克阅读 3,156评论 1 3
  • 注意:这是版本3的文档。还提供了版本2的文档。 Django REST framework 是一个强大且灵活的工具...
    鹏ve阅读 4,709评论 0 6
  • 吃过晚饭和姑娘去洗澡,优哉游哉一路踏歌而行,于是远远就看见了小果果儿正在她爹怀里抱着。虽然已近暮色,我还是准确无误...
    一直想飞的鱼阅读 475评论 2 3
  • 今天老师继续了昨天的话题,讲了关于芯片内部的结构,还讲了一个关于看门狗的电路,他可以有效的给系统复位,从而保证程序...
    宋肖鹏阅读 162评论 0 1
  • 记住三步曲 第一步:“管好嘴,迈开腿。” 冲突当场可以深呼吸,回避现场进行冷静,当理智重回大脑时再开始沟通。 第二...
    爱上阅读做好妈妈阅读 359评论 0 0

友情链接更多精彩内容