ToB企服应用市场:ToB评测及商务社交产业平台

标题: Django-rest-framework开发api接口 [打印本页]

作者: 玛卡巴卡的卡巴卡玛    时间: 2022-9-16 17:17
标题: Django-rest-framework开发api接口
django-rest-framework开发api接口

(1) 创建django项目drfdemo1并且创建一个名为app的应用
  1. django-admin startproject drfdemo1
复制代码
  1. python manage.py startapp app
复制代码
(2) 安装django-rest-framework
  1. pip install djangorestframework
复制代码
(3) 在settings.py的INSTALLED_APPS注册,并且在INSTALLED_APPS和MIDDLEWARE配置属性中将部分django自带功能去除
  1. INSTALLED_APPS = [
  2.     # 'django.contrib.admin',
  3.     'django.contrib.auth',
  4.     'django.contrib.contenttypes',
  5.     'django.contrib.sessions',
  6.     # 'django.contrib.messages',
  7.     # 'django.contrib.staticfiles',
  8.     'app',
  9.     'rest_framework',
  10. ]
  11. MIDDLEWARE = [
  12.     'django.middleware.security.SecurityMiddleware',
  13.     'django.contrib.sessions.middleware.SessionMiddleware',
  14.     'django.middleware.common.CommonMiddleware',
  15.     'django.middleware.csrf.CsrfViewMiddleware',
  16.     'django.contrib.auth.middleware.AuthenticationMiddleware',
  17.     # 'django.contrib.messages.middleware.MessageMiddleware',
  18.     'django.middleware.clickjacking.XFrameOptionsMiddleware',
  19. ]
复制代码
上述配置保留了Auth认证系统和Session功能,当django运行时只会加载Auth认证系统和Session功能,这样能减少django占用服务器的系统资源,除此之外还要注释掉配置属性TEMPLATES和STATIC_URL,因为API接口无需使用模板功能和静态资源
(4)  路由配置

在drfdemo1的urls.py中编写以下内容:
  1. from django.urls import path, include
  2. urlpatterns = [
  3.     path('api/',include('app.urls')),
  4. ]
复制代码
在app里创建urls.py,并写入如下内容:
  1. from django.urls import path
  2. from .views import *
  3. urlpatterns = [
  4.     path('students/',students.as_view())
  5. ]
复制代码
(5) 模型
  1. from django.db import models
  2. class studentsInfo(models.Model):
  3.     name = models.CharField(max_length=12, verbose_name='姓名')
  4.     sex = models.CharField(max_length=1, verbose_name='性别')
  5.     age = models.IntegerField(verbose_name='年龄')
  6.     classroom = models.CharField(max_length=10, verbose_name='教室')
  7.     info = models.CharField(max_length=100, verbose_name='个人简介')
复制代码
(6) 在app里创建serializer.py,内容如下:
  1. from rest_framework import serializers
  2. from .models import *
  3. class studentSerializer(serializers.ModelSerializer):
  4.     class Meta:
  5.         model = studentsInfo
  6.         fields = "__all__"
复制代码
(7) 视图类编写
  1. from .models import *
  2. from django.http import JsonResponse
  3. from .serializer import studentSerializer
  4. from rest_framework.views import APIView
  5. class students(APIView):
  6.     def get(self, request):
  7.         data = studentsInfo.objects.all()
  8.         serializer = studentSerializer(instance=data,many=True)
  9.         return JsonResponse(serializer.data,safe=False)
复制代码
(8) 执行数据迁移
  1. python manage.py makemigrations
  2. python manage.py migrate
复制代码
迁移之后插入测试数据
(9) 启动项目
  1. python manage.py runserver 8000
复制代码
(10) 查看返回的数据

访问127.0.0.1/api/students,结果如下:
  1. [
  2.     {
  3.         "id": 1,
  4.         "name": "小明",
  5.         "sex": "男",
  6.         "age": 22,
  7.         "classroom": "301",
  8.         "info": "这个人很懒,什么也没有留下"
  9.     },
  10.     {
  11.         "id": 2,
  12.         "name": "小红",
  13.         "sex": "女",
  14.         "age": 18,
  15.         "classroom": "301",
  16.         "info": "这个人很懒,什么也没有留下"
  17.     },
  18.     {
  19.         "id": 3,
  20.         "name": "张三",
  21.         "sex": "男",
  22.         "age": 25,
  23.         "classroom": "307",
  24.         "info": "这个人很懒,什么也没有留下"
  25.     },
  26.     {
  27.         "id": 4,
  28.         "name": "李四",
  29.         "sex": "男",
  30.         "age": 24,
  31.         "classroom": "308",
  32.         "info": "这个人很懒,什么也没有留下"
  33.     }
  34. ]
复制代码



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4