如何使用Django REST框架和MongoDB建立一个Notes应用API

421 阅读5分钟

如何使用Django REST框架和MongoDB构建笔记应用程序API

MongoDB是一个NoSQL数据库包。它以类似JSON的格式保存数据,而不是传统的行-列格式。Django REST框架是一个强大的工具包,用于构建可扩展的API。Django是Python开发人员用来建立网站的最受欢迎的软件包之一。

你将学习如何在你的Web项目中使用强大的Django REST框架和MongoDB。你将学习如何在笔记应用中构建CRUD功能。

在这篇文章中,你将

  • 理解将MongoDB集成到Django项目中。
  • 学习如何设置和运行Django REST API。
  • 在Django REST API中创建CRUD功能。
  • 构建一个笔记应用API。

前提条件

要跟上这篇文章,必须具备以下条件。

  • 在你的机器上安装Python 3。
  • 有使用Python和Django的经验。

设置MongoDB服务器

你可以从[MongoDB官方网站]下载并安装MongoDB数据库服务器。

你可以用以下命令检查你的机器上安装的MongoDB的版本。

mongo --version

要使用mongo shell,请用下面的命令启动该服务。

mongo

用下面的命令创建并切换到一个新的数据库。

use notes_database

MongoDB Compass是一个GUI工具,使你能够与MongoDB互动。你可以通过MongoDB Compass查看和操作你的MongoDB数据库。

MongoDB Compass可以在官方网站上下载,[下载并安装Compass]。

设置虚拟环境

我们将安装virtualenv ,为我们的项目启用一个虚拟环境。它将使人们能够将一个项目及其依赖关系与你的机器上的其他项目隔离。

运行下面的命令来安装virtualenv

python -m pip install --user virtualenv

接下来,让我们为我们的项目创建一个文件夹,然后在其中创建一个虚拟环境。

创建一个名为django_mongodb_project 的文件夹,如是。

mkdir django_mongodb_project

用下面的命令移动到项目文件夹中。

cd django_mongodb_project

用下面的命令创建一个名为venv 的虚拟环境。

virtualenv venv

接下来,激活这个环境。

source venv/bin/activate

如果你使用Windows,用下面的命令激活虚拟环境。

.\venv\Scripts\activate

安装软件包

我们将需要django,djangorestframework, 和djongo 包。

  • django:Django框架包。
  • djangorestframework:用于在Django中开发API的Django REST框架。
  • djongo:一个将Python对象映射到MongoDB文档的工具。

让我们用以下命令安装Django和Django REST框架。

pip install django django-rest-framework djongo

现在,创建一个名为notes_app 的Django项目。

django-admin startproject notes_app
cd notes_app

然后,在notes_app 项目内创建一个名为api 的应用程序。

django-admin startapp api

导航到项目级文件夹内的settings.py 文件。然后,通过添加我们创建的应用程序、apirest_framework 来改变INSTALLED_APPS 列表。

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

配置MongoDB

导航到settings.py 文件,并更改DATABASES 的设置,如下所示。

DATABASES = {
   'default' : {
      'ENGINE' : 'djongo',
      'NAME' : 'notes_database'
   }
}

通过API构建笔记应用程序

我们将为一个笔记应用程序开发一个API,以记下和做笔记。用户将能够做笔记,获得他们所做的笔记的列表,并删除笔记。

让我们在我们创建的api 应用程序的models.py 文件中为笔记定义一个模型。

from django.db import models
class Note(models.Model):
    title = models.CharField(max_length=50)
    text = models.TextField()
    def __str__(self):
        return self.title

让我们把这个模型迁移到数据库中。

python manage.py makemigrations
python manage.py migrate

接下来,让我们创建一个串行器类。当用户向API发出请求时,序列化器会对相应的响应进行格式化。在api 应用程序文件夹中创建一个新的serializers.py 文件。按照下面的演示进行必要的导入,并创建NoteSerializer 类。

from rest_framework import serializers
from .models import Note
class NoteSerializer(serializers.ModelSerializer):
    class Meta:
        model = Note
        fields = ('id', 'title', 'text')

接下来,让我们创建将处理我们的API的请求和响应动作的视图。在api 应用程序的views.py 文件中创建NoteListNoteDetail 视图。

from rest_framework import generics
from .models import Note
from .serializers import NoteSerializer
class NoteList(generics.ListCreateAPIView):
    queryset = Note.objects.all()
    serializer_class = NoteSerializer
class NoteDetail(generics.RetrieveUpdateDestroyAPIView):
    queryset = Note.objects.all()
    serializer_class = NoteSerializer

在上面的代码中,我们创建了两个视图。NoteList ,使我们能够创建一个笔记,也可以查看已创建的笔记列表。NoteDetail ,使我们能够查看一个特定的笔记,更新或删除它。

接下来,我们将创建端点来接收请求。在api 目录内创建一个新的urls.py 文件。

在里面创建urlpatterns ,如下所示。

from django.urls import path
from api import views
urlpatterns = [
    path('', views.NoteList.as_view()),
    path('<int:pk>/', views.NoteDetail.as_view()),

接下来,设置项目的urls.py 文件,使其指向应用程序级别的urlpatterns 。然后,包括一个指向api 应用程序的urls.py 文件的路径。

from django.contrib import admin
from django.urls import path, include
urlpatterns = [
    path('admin/', admin.site.urls),
    path('api/', include('api.urls')),  # add this line
]

第一个端点接收NoteList 视图的'LIST'和'CREATE'动作。第二个端点接收一个特定笔记的id ,以查看该笔记的细节。

使用可浏览的API进行测试

Django REST框架带有可浏览的API。你可以用可浏览API来测试你的API端点。

激活测试服务器。

python manage.py runserver

然后在浏览器上导航到127.0.0.1:8000/api/ ,创建笔记。

image title

你可以添加注释并刷新网页以查看添加的注释。

image title

然后,在127.0.0.1:8000/api/id ,查看创建的笔记。

image title

你也可以在详细页面上删除或更新笔记。下图中的红色方块包含删除按钮。

image title

你也可以更新笔记的标题或文字。请看上图中的蓝色方块区域。编辑文本或标题并点击 "PUT "按钮。

总结

这篇文章描述了如何为RESTful Django API配置MongoDB数据库。我们还为一个Notes应用创建了一个API。你可以继续在你的Django REST API项目中使用MongoDB。