Django使用rest_framework写出API

下面是关于“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日

相关文章

  • 详解OpenCV-Python Bindings如何生成

    OpenCV-Python Bindings是OpenCV库的Python绑定,它使得Python开发者能够使用OpenCV的各种函数和算法。在这篇攻略中,我们将详细介绍如何生成OpenCV-Python Bindings。 步骤一:安装依赖项 在生成OpenCV-Python Bindings之前,需要安装一些依赖项。以下是安装所需依赖项的命令: sudo…

    人工智能概论 2023年5月25日
    00
  • 解决Django no such table: django_session的问题

    处理Django no such table: django_session错误的完整攻略如下: 确认DATABASES设置 首先,检查您的settings.py文件中的DATABASES设置是否正确。您需要根据您的数据库类型选择正确的引擎,并确保NAME、USER和PASSWORD设置正确,以连接到您的数据库。例如,使用SQLite3数据库的setting…

    人工智能概览 2023年5月25日
    00
  • 酷! 程序员用Python带你玩转冲顶大会

    酷! 程序员用Python带你玩转冲顶大会攻略 简介 《冲顶大会》是一款热门的在线答题游戏,而Python是一门功能强大的编程语言。这篇攻略将会介绍如何使用Python来玩转《冲顶大会》。 准备工作 安装 Python 3.x,推荐使用最新版本 安装 requests 和 Beautiful Soup 4 这两个 Python 库 pip3 install …

    人工智能概论 2023年5月25日
    00
  • Java + Selenium + OpenCV解决自动化测试中的滑块验证问题

    我来为您详细讲解“Java + Selenium + OpenCV解决自动化测试中的滑块验证问题”的攻略。 一、背景 在进行自动化测试时,经常会遇到需要通过滑块验证的情况,这时候如果采取传统的UI元素定位、模拟鼠标拖动等方式,不仅效率低下,而且容易被反爬虫策略拦截。本文将介绍一种利用Java + Selenium + OpenCV的方式来解决滑块验证问题的方…

    人工智能概论 2023年5月25日
    00
  • windows下Nginx日志处理脚本

    下面是关于“Windows下Nginx日志处理脚本”的详细攻略。 一、背景 Nginx是一款高性能的Web服务器,它能够快速处理大量请求。在开发网站时,我们会使用Nginx来提供网站服务。Nginx会记录访问日志,其中包含了访问者的IP地址、请求的URL、响应状态码等信息。 针对这些Nginx记录的日志信息,我们需要分析日志才能更好地了解网站的访问情况、用户…

    人工智能概览 2023年5月25日
    00
  • Windows设置nginx开机自启动的方法

    当我们使用 Windows 操作系统来配置 Nginx 服务器时,每次重启系统时都需要手动启动 Nginx,非常麻烦。因此,设置 Nginx 开机自启动是非常必要的。下面是 Windows 设置 Nginx 开机自启动的完整攻略: 第一步:创建一个 Nginx 开机启动的 .bat 文件 在任何一个地方创建一个新的文本文件,比如说在桌面上。 将下面这行命令复…

    人工智能概览 2023年5月25日
    00
  • windows系统下Python环境搭建教程

    Windows系统下Python环境搭建教程 1. 下载Python 首先需要从Python官网下载Python安装包。建议下载最新版本的Python,即Python 3.x版本。 下载地址:https://www.python.org/downloads/ 2. 安装Python 下载完成后,双击安装包进行安装,按照提示一步步进行即可。 其中需要注意以下两…

    人工智能概览 2023年5月25日
    00
  • Docker AIGC等大模型深度学习环境搭建步骤最新详细版

    Docker AIGC大模型深度学习环境搭建步骤 简介 Docker是一款虚拟化容器技术,它可以将应用及其依赖打包为一个可移植的容器,从而实现软件环境的一致性和跨平台性。在深度学习领域,Docker不仅可以简化环境搭建的复杂度,也可以减少环境带来的差异性。 AIGC (AI Grand Challenge)是面向深度学习领域的AI竞赛平台,通过在平台上提供大…

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