Django使用rest_framework写出API

yizhihongxing

下面是关于“Django使用rest_framework写出API”的完整攻略。

1. 安装Django和rest_framework

在开始使用Django中的rest_framework库编写API之前,需要安装Django和rest_framework库,我们可以通过以下命令进行安装:

pip install django
pip install djangorestframework

2. 新建Django项目

安装完Django和rest_framework库后,我们可以新建一个Django项目,假设我们想要新建一个名为“api”的项目,可以通过以下命令进行创建:

django-admin startproject api

3. 新建Django应用

在新建好Django项目后,我们需要新建一个应用来编写我们的API,假设我们想要新建一个名为“example”的应用,可以通过以下命令进行创建:

cd api
python manage.py startapp example

4. 配置settings.py

在新建好Django应用后,我们需要将这个应用添加到Django项目的settings.py文件中,可以通过以下步骤进行配置:

第一步,打开api项目下的settings.py文件,将example应用添加到INSTALLED_APPS中,修改后的代码如下:

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

第二步,将rest_framework添加到api项目下的settings.py文件的INSTALLED_APPS中,修改后的代码如下:

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

第三步,配置rest_framework的默认设置,将以下代码添加到api项目下的settings.py文件中:

REST_FRAMEWORK = {
    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.permissions.AllowAny',
    ],
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework.authentication.SessionAuthentication',
        'rest_framework.authentication.BasicAuthentication',
    ],
}

其中DEFAULT_PERMISSION_CLASSES是默认权限设置,通过这个设置我们可以指定API的访问权限,这里我们将API的访问权限设置为了所有用户都有权限访问(rest_framework.permissions.AllowAny);DEFAULT_AUTHENTICATION_CLASSES是默认的身份验证设置,通过这个设置我们可以对API访问者的身份进行验证,这里我们指定使用SessionAuthentication和BasicAuthentication进行验证。

5. 编写model

在配置好settings.py文件后,我们需要编写model,假设我们需要编写一个名为Person的model,有以下两个字段:

  • name(姓名,字符串类型)
  • age(年龄,整型)

我们可以在example应用下的models.py文件中添加如下代码:

from django.db import models

# Create your models here.

class Person(models.Model):
    name = models.CharField(max_length=40)
    age = models.IntegerField()

6. 创建serializer

在编写好model后,我们需要编写serializer,serializer可以将model序列化成为JSON格式,反之也可以通过JSON格式创建model,假设对于上面编写的Person Model,有以下两个字段:

  • name(姓名,字符串类型)
  • age(年龄,整型)

我们可以在example应用下的serializers.py文件中添加如下代码:

from rest_framework import serializers
from .models import Person

class PersonSerializer(serializers.ModelSerializer):
    class Meta:
        model = Person
        fields = ['id', 'name', 'age']

在这段代码中,我们通过导入rest_framework库中的serializers类来编写serializer,使用PersonSerializer类来指定序列化哪个model。

7. 编写View

在编写好serializer后,我们需要编写View,View用于对serializer进行操作,进而提供Web API。假设我们需要编写一个名为Person的API视图,可以通过以下代码在example应用下的views.py中进行编写:

from rest_framework import generics
from rest_framework.response import Response
from .models import Person
from .serializers import PersonSerializer

class PersonList(generics.ListCreateAPIView):
    queryset = Person.objects.all()
    serializer_class = PersonSerializer

    def list(self, request, *args, **kwargs):
        queryset = self.get_queryset()
        serializer = self.get_serializer(queryset, many=True)
        return Response(serializer.data)

在这段代码中,我们通过导入rest_framework库中的generics类来编写View,使用PersonList类来指定对应API视图的处理。

8. 配置URL

在完成View编写后,我们需要指定API视图对应的URL,在example应用下的urls.py中添加如下代码:

from django.urls import path
from .views import PersonList

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

在这段代码中,我们将视图类PersonList绑定到了/person/的URL上,这样用户通过访问http://127.0.0.1:8000/person/就可以访问到API视图了。

9. 启动服务并访问API

最后,我们需要启动Django服务来提供Web API,可以通过以下命令启动服务:

python manage.py runserver

启动完成后,我们就可以访问localhost:8000/person/来访问我们的API视图了。

示例说明

下面我们使用两个示例来说明如何使用Django和rest_framework编写Web API。

示例1:获取Person

假设我们需要获取Person,我们可以通过访问http://127.0.0.1:8000/person/来获取Person,API返回的数据格式为JSON,示例如下:

[
    {
        "id": 1,
        "name": "Tom",
        "age": 18
    },
    {
        "id": 2,
        "name": "Lucy",
        "age": 20
    }
]

示例2:添加Person

假设我们需要添加Person,我们可以通过发送POST请求到http://127.0.0.1:8000/person/来添加Person,请求的数据格式为JSON,示例如下:

{
    "name": "Jerry",
    "age": 22
}

添加成功后,API返回的数据格式为JSON,示例如下:

{
    "id": 3,
    "name": "Jerry",
    "age": 22
}

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Django使用rest_framework写出API - Python技术站

(0)
上一篇 2023年5月25日
下一篇 2023年5月25日

相关文章

  • 详解MongoDB和Spring整合的实例代码

    实现MongoDB和Spring整合可以分为以下几个步骤: 添加Maven依赖: <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-mongodb</artifactId> <ver…

    人工智能概论 2023年5月25日
    00
  • Mongoose find 查询返回json数据处理方式

    当使用Mongoose对MongoDB进行查询时,通过调用find()函数可以返回一组符合查询条件的文档,结果以JSON的格式返回。本文将详细讲解如何对这些JSON数据进行处理。 1. 使用then()方法处理查询结果 在Mongoose查询到数据后,会通过Promise的形式将结果返回。我们可以使用Promise的then()方法来处理该结果。下面是一个示…

    人工智能概论 2023年5月25日
    00
  • Django实现简单网页弹出警告代码

    下面是一个详细的攻略,来讲解如何使用Django实现简单网页弹出警告代码。 步骤1:创建一个Django项目 首先,我们需要创建一个Django项目。可以使用以下命令: $ django-admin startproject myproject 步骤2:创建一个Django App 接下来,我们需要创建一个Django App。可以使用以下命令: $ pyt…

    人工智能概论 2023年5月25日
    00
  • python和ruby,我选谁?

    Python和Ruby,我选谁? Python和Ruby都是著名的脚本语言,在功能和框架方面有很多相似之处,然而它们之间仍然存在一些不同之处。那么,当你需要选择其中一种语言时,该如何决策呢?下面为你提供一些攻略: 1. 适用场景 Python和Ruby都可以用于数据处理、Web编程和自动化脚本编写等任务。然而,它们在不同领域中有着各自的特点。 Python适…

    人工智能概览 2023年5月25日
    00
  • Go语言实战之实现一个简单分布式系统

    Go语言实战之实现一个简单分布式系统 简介 本攻略介绍如何使用Golang语言实现一个简单的分布式系统,包括以下内容: 分布式系统的基本概念 分布式系统中节点间通信协议的选择 在Golang中实现分布式系统的关键技术和库的使用方法 实现一个简单的分布式系统的步骤 分布式系统的基本概念 简单来讲,分布式系统是由多个独立计算机构成的系统,在这些计算机之间共享资源…

    人工智能概览 2023年5月25日
    00
  • Django上线部署之Apache的方法

    下面是”Django上线部署之Apache的方法”的完整攻略。 前置条件 已经在服务器上成功安装Django和Apache。 已经完成了Django项目的开发和测试。 配置虚拟环境并安装必要依赖。 步骤 1. 配置Apache2 编辑Apache配置文件,打开Terminal并输入以下命令: sudo nano /etc/apache2/sites-avai…

    人工智能概览 2023年5月25日
    00
  • Debian系统下为PHP程序配置Nginx服务器的基本教程

    下面就为您详细讲解在Debian系统下为PHP程序配置Nginx服务器的基本教程。 准备工作 在开始配置之前,我们需要确保Debian系统中已经安装了Nginx服务器和PHP解释器。可以使用以下命令来确认: sudo apt-get update sudo apt-get install nginx php-fpm 配置Nginx服务器 安装并启动Nginx…

    人工智能概览 2023年5月25日
    00
  • jupyter notebook清除输出方式

    当我们在使用Jupyter Notebook进行开发或学习时,常常需要查看演示结果或者数值结果,但随着操作越来越多,输出的结果也越来越多,这时候最好的方式就是将之前的输出全部清除,使得Notebook的界面更整洁易读。在下面的攻略中,我将为你介绍两种Jupyter Notebook清除输出方式。 第一种方式:手动清除输出 这是最简单的一种方法,我们可以通过以…

    人工智能概览 2023年5月25日
    00
合作推广
合作推广
分享本页
返回顶部