尝试使用Django REST框架的经历

首先

我对Django产生兴趣是因为有机会在项目中参与其中。
最近,通过参加研讨会,我的动力急剧提升了。
然而,我还没有将所学资料整理并没有得到实际产出,感到有些遗憾。
希望通过写下来并向他人解释,确认我所理解的是否足够深入。

环境

操作系统:mac os 高级版
Python:3.7
Django:Django-2.1.3
Django Rest Framework:Djangorestframework-3.9.0

目录

1.在虚拟环境中建立并安装所需的库。
2.创建Django项目。
3.创建Django应用程序。
4.在配置文件中添加额外应用程序。
5.创建模型。
6.构建数据库。
7.定义序列化器。
8.定义视图。
9.定义URL。
10.启动服务器。
11.确认。
12.评论。

1.建立虚拟环境并安装所需库。

我会创建一个虚拟环境。
在这个虚拟环境中,安装本应用所需的
软件包的影像。
这样一来,操作系统本身的环境就不会变得混乱。

python3 -m venv rest_api

当上述命令执行完成后,请用以下命令将虚拟环境激活。
(激活环境名为rest_api的虚拟环境)

source rest_api/bin/activate

当虚拟环境被激活后,环境名称将会显示在命令行的开头。
由于虚拟环境已处于激活状态,接下来将准备进行软件包的安装。

(rest_api) mac: 

为了准备软件包的安装,需要更新用于管理软件包的软件。如果没有这个,就无法安装Django时会报错。

pip3 install --upgrade pip

然后,通过以下命令安装Django和Django Rest Framework。

pip3 install Django
pip3 install Djangorestframework

只要成功执行两者之一,安装就完成了。

2. 创建Django项目.

为了创建本次应用程序,我们将创建一个项目文件夹。
一旦创建了该项目文件夹,就可以进行整体的应用程序设置等管理。
以下是与教程等的创建方法不同,但我们选择将项目的配置文件放在名为config的文件夹中。

我正在创建一个名为“rest_pj”的项目。

mkdir rest_pj
cd rest_pj
django-admin startproject config .

当前目录状态

在下面有一个名为config的文件夹,这是项目的配置目录。

skitch.png

创建Django应用程序

接下来,我们将创建一个应用程序。
我们使用名为api的应用程序进行创建。
请参考以下当前文件夹层次结构。

django-admin startapp api

目前的目錄狀態

在与config文件夹位于同一层级的位置可以看到一个名为”api”的文件夹已经存在。
由于这个api将成为一个应用程序,所以如果以后想要创建前端界面,
也可以创建一个用于前端的应用程序。

dir2.png

在设置文件中添加附加应用程序。

这是让Django识别”api”和”restframework”应用程序的工作。

追加的内容,请放在config文件夹下。
– 链接起来djangorestframework(已经在安装时安装的内容)
– 链接起来api(作为api应用程序添加的内容)

# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    #以下の2つを追加
    'rest_framework',
    'api',
]

5.模型的建立

由于Django采用了ActiveRecord模型,所以需要先创建模型来建立数据库。我们将修改api文件夹下的文件。这次我们决定创建一个名为User的模型。

from django.db import models

# Create your models here.

class User(models.Model):
    name = models.CharField(max_length=32)
    email = models.EmailField()

6. 建立数据库

我们决定使用Django的标准SQLite3。
如果追求实用性的话,似乎最好使用PostgreSQL。

请在以下命令行中执行,创建数据库。

#データベース構築のためのmigrationファイルを作成
python manage.py makemigrations

#migrationファイルを元にデータベースを構築する
python manage.py migrate

7. 序列化器的定义。

Serializer是restframework的一个模块,用于处理请求的验证和过滤等任务。(由于serializer有多种实现方式,因此需要进行研究并尝试实现。)

我希望在这次开发中,能够使用JSON格式返回响应,并且充分利用模型定义,因此我想使用ModelSerializer。

如果能够巧妙地使用Serializer,开发速度可能会显著提高。
将以下文件在api文件夹下创建为新文件。

# coding: utf-8

from rest_framework import serializers

from .models import User

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ('name', 'email')

8. 视图的定义

我将修改api文件夹下的views.py文件。
视图在页面上扮演返回哪个页面的角色,
这里会记录获取哪些数据以及以何种形式返回。


# Create your views here.

from rest_framework import viewsets

from .models import User
from .serializer import UserSerializer

class UserViewSet(viewsets.ModelViewSet):
    queryset = User.objects.all()
    serializer_class = UserSerializer

9.URL 的定義

URL分发器将读取以下文件,以便将URL定义的api应用程序设置为可读。

from django.contrib import admin
from django.urls import path, include
from api.urls import router

urlpatterns = [
    path('admin/', admin.site.urls),
    #apiのurlsをインクルード
    path('api/', include(router.urls)),
]

在api文件夹中创建一个新的urls.py文件,并定义与视图的关联。

# coding: utf-8

from rest_framework import routers
from api.views import UserViewSet

router = routers.DefaultRouter()
router.register(r'users', UserViewSet)

10.服务器启动

请使用以下命令启动服务器。
如果要停止,请使用Ctrl + C来停止。

python manage.py runserver

确认

我将尝试通过以下的URL进行访问并进行确认。
如果屏幕成功显示,则表示操作成功。

访问「http://localhost:8000/api/」。

api_root.png
api_get_users.png

12. 心得体会

虽然可以轻松地创建应用程序,但我觉得还需要了解Django框架的工作原理,以及它是否能够根据需求提供相应的功能。
我打算在将来尝试多方面的应用,积累可以实践的知识和技术。
此外,作为一种流行的编程语言,学习最近流行的Python也可能对像我这样的初学者很有好处。

请参照以下内容,用汉语进行本地化的改述,只需要一种选项:

参考

https://docs.djangoproject.com/ja/2.1/intro/tutorial01/
https://qiita.com/kimihiro_n/items/86e0a9e619720e57ecd8 ->
https://docs.djangoproject.com/ja/2.1/intro/tutorial01/
https://qiita.com/kimihiro_n/items/86e0a9e619720e57ecd8。

广告
将在 10 秒后关闭
bannerAds