首页 > 其他分享 >Django-rest-framework开发api接口

Django-rest-framework开发api接口

时间:2022-08-14 19:55:47浏览次数:64  
标签:name models py django framework api contrib import Django

django-rest-framework开发api接口

(1) 创建django项目drfdemo1并且创建一个名为app的应用

django-admin startproject drfdemo1
python manage.py startapp app

(2) 安装django-rest-framework

pip install djangorestframework

(3) 在settings.py的INSTALLED_APPS注册,并且在INSTALLED_APPS和MIDDLEWARE配置属性中将部分django自带功能去除

INSTALLED_APPS = [
    # 'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    # 'django.contrib.messages',
    # 'django.contrib.staticfiles',
    'app',
    'rest_framework',
]

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    # 'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

上述配置保留了Auth认证系统和Session功能,当django运行时只会加载Auth认证系统和Session功能,这样能减少django占用服务器的系统资源,除此之外还要注释掉配置属性TEMPLATES和STATIC_URL,因为API接口无需使用模板功能和静态资源

(4) 路由配置

在drfdemo1的urls.py中编写以下内容:

from django.urls import path, include

urlpatterns = [
    path('api/',include('app.urls')),
]

在app里创建urls.py,并写入如下内容:

from django.urls import path
from .views import *

urlpatterns = [
    path('students/',students.as_view())
]

(5) 模型

from django.db import models


class studentsInfo(models.Model):
    name = models.CharField(max_length=12, verbose_name='姓名')
    sex = models.CharField(max_length=1, verbose_name='性别')
    age = models.IntegerField(verbose_name='年龄')
    classroom = models.CharField(max_length=10, verbose_name='教室')
    info = models.CharField(max_length=100, verbose_name='个人简介')

(6) 在app里创建serializer.py,内容如下:

from rest_framework import serializers
from .models import *


class studentSerializer(serializers.ModelSerializer):

    class Meta:
        model = studentsInfo
        fields = "__all__"

(7) 视图类编写

from .models import *
from django.http import JsonResponse
from .serializer import studentSerializer
from rest_framework.views import APIView


class students(APIView):
    def get(self, request):
        data = studentsInfo.objects.all()
        serializer = studentSerializer(instance=data,many=True)
        return JsonResponse(serializer.data,safe=False)

(8) 执行数据迁移

python manage.py makemigrations
python manage.py migrate

迁移之后插入测试数据

(9) 启动项目

python manage.py runserver 8000

(10) 查看返回的数据

访问127.0.0.1/api/students,结果如下:

[
    {
        "id": 1,
        "name": "小明",
        "sex": "男",
        "age": 22,
        "classroom": "301",
        "info": "这个人很懒,什么也没有留下"
    },
    {
        "id": 2,
        "name": "小红",
        "sex": "女",
        "age": 18,
        "classroom": "301",
        "info": "这个人很懒,什么也没有留下"
    },
    {
        "id": 3,
        "name": "张三",
        "sex": "男",
        "age": 25,
        "classroom": "307",
        "info": "这个人很懒,什么也没有留下"
    },
    {
        "id": 4,
        "name": "李四",
        "sex": "男",
        "age": 24,
        "classroom": "308",
        "info": "这个人很懒,什么也没有留下"
    }
]

标签:name,models,py,django,framework,api,contrib,import,Django
From: https://www.cnblogs.com/minqiliang/p/16586159.html

相关文章

  • django restframework 后端接口权限
    REST_FRAMEWORK={'EXCEPTION_HANDLER':'djangoProject.utils.exception.custom_exception_handler',#在不需要权限就能访问的视图设置permissions_classes......
  • 稳定好用的短连接生成平台,支持API批量生成
    ​https://www.5w.fit/   01安全:快码拥有两种模式:防封模式和极速模式,防封模式使短链更加安全!02无流量劫持:快码短链绝不劫持流量!03极速:专属大量服务器,支持......
  • Django orm的managed参数
    Djangoorm的managed参数如果一张表不是在django的models.py中创建表,而是该表由cmd或者Navicat或者其他方式创建的,或者该表是一个视图,那么也可以在models.py里写上该表的......
  • Django中读取数据的一些学习
    Django中读取数据的一些学习关于元组的读取​ 当我们在写数据库架构时,我们需要考虑数据库内存,而经常的操作是,比如对于gender,固定值一般为男、女,但是一直写男女中文字符过......
  • 常用API(七)
    包装类基本数据类型对应的引用类型(把基本数据类型变成了对象)如何理解包装类 基本数据类型包装类byteByteshortShortcharCharacterintInteger......
  • MinimalAPI---部署项目到IIS
    1.安装IIS,详情见:https://product.pconline.com.cn/itbk/vedio/1903/12395139.html2.安装ASP.NETCore运行时环境和程序包下载HostingBundle文件 安装包下载地址:https......
  • VS2010 + Mysql5.7 使用ADO.Net Entity Framework
        系统很LOW,不想花太多时间来升级,可想做点什么,总是这也不行那也不行,更种安装要不就是vs版本太低,要不不支持低版本的mysql,调试起来很费时。用老版办法写代码又太费......
  • FluentValidation 验证:WebApi 中使用 注入服务
    比如你要验证用户的时候判断一下这个用户名称在数据库是否已经存在了,这时候FluentValidation就需要注入查询数据库只需要注入一下就可以了publicclassLogin3Reques......
  • FluentValidation 验证:WebApi 中使用 基本使用
    FluentValidation.AspNetCore引入包publicclassLogin2RequestValidator:AbstractValidator<Login2Request>{ publicLogin2RequestValidator() { RuleFor(x=>......
  • MinimalAPI---MinimalAPI+EFCore+IOC
    1.项目结构数据库:SQLServer项目类型:MinimalAPI   2.MinimalApi.Db类库(1)引入相关的NuGet包Microsoft.EntityFrameworkCore Microsoft.EntityFrameworkCore.Sq......