DRF勉强(Vol.1)创建后端项目

首先

我会参考以下书籍来创建样本,以学习DRF(Django REST framework)。最终目标是根据书中的示例创建Vue+DRF。

    1. 可在現場使用的Django教材

 

    可在現場使用的Django REST Framework教材

在第一卷中,我们将进行后端项目的创建。

环境

    • Intel Mac 13.4.1(c)

 

    • Python 3.11.4

 

    • Django 4.2.3

 

    DRF 3.14.0

前提 – premise or prerequisite

    • pyenvがインストールされていること

 

    poetryがインストールされていること

詩歌的準備

诗歌的设定

为了在项目的根目录下创建一个由Poetry创建的虚拟环境,请执行以下操作。

# poetryの最新化
$ poetry self update

# 変更内容の確認
$ poetry config --list
--- 省略 ---
virtualenvs.create = true
virtualenvs.in-project = true`true`になっていることを確認
--- 省略 ---

# `true`になっていない場合は、以下を実行
$ poetry config virtualenvs.in-project true

诗歌的安排

会默认值设置poetry。
而且,需要注意的是项目文件夹的名称不能使用-等部分字符。

# プロジェクトフォルダ作成
$ mkdir -p vue_drf/backend
$ cd vue_drf/backend

# Pythonのバージョン指定
$ pyenv local 3.11.4

# poetryのセットアップ
$ poetry init -n
$ poetry install --no-root

自动启用venv

使用direnv,设置自动启用/禁用虚拟环境。

$ echo 'source .venv/bin/activate' > .envrc
$ direnv allow

增加包裹

请添加所需的软件包。
请注意,在仅用于开发的软件包中加上“-G dev”。

# パッケージの追加
$ poetry add Django djangorestframework

# 開発用パッケージの追加
$ poetry add -G dev debugpy pytest black ruff mypy
在这个时点的pyproject.toml文件中:
[tool.poetry]
名称 = “backend”
版本 = “0.1.0”
描述 = “”
作者 = [“Jozuo <jozuo.dev@gmail.com>”]
自述文件 = “README.md”[tool.poetry.dependencies]
python = “^3.11”
django = “^4.2.3”
djangorestframework = “^3.14.0”

[tool.poetry.group.dev.dependencies]
debugpy = “^1.6.7”
pytest = “^7.4.0”
black = “^23.7.0”
ruff = “^0.0.280”
mypy = “^1.4.1”

[build-system]
需要 = [“poetry-core”]
构建后端 = “poetry.core.masonry.api”

创建一个Django应用程序

按照以下目录结构创建Django项目。

vue_drf/
└── backend
    ├── apiv1/          ... API用ディレクトリ
    ├── config/         ... 設定用ディレクトリ
    ├── shop/           ... Djangoモデル用ディレクトリ
    ├── manage.py*
    └── pyproject.toml

创建应用程序

# 設定ディレクトリの作成
$ django-admin startproject config .

# API用ディレクトリの作成
$ ./manage.py startapp apiv1

# Djangoモデル用ディレクトリ作成
$ ./manage.py startapp shop
这时候的文件列表如下:
vue_drf/
└── backend/
├── apiv1/
│ ├── migrations/
│ │ └── __init__.py
│ ├── __init__.py
│ ├── admin.py
│ ├── apps.py
│ ├── models.py
│ ├── tests.py
│ └── views.py
├── config/
│ ├── __pycache__/
│ │ ├── __init__.cpython-311.pyc
│ │ └── settings.cpython-311.pyc
│ ├── __init__.py
│ ├── asgi.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── shop/
│ ├── migrations/
│ │ └── __init__.py
│ ├── __init__.py
│ ├── admin.py
│ ├── apps.py
│ ├── models.py
│ ├── tests.py
│ └── views.py
├── manage.py*
├── poetry.lock
└── pyproject.toml

新增或修改设置

将以下更改应用于Django的配置文件(config/settings.py)。

更改本地设置、时区

  --- 省略 ---
  # Internationalization
  # https://docs.djangoproject.com/en/4.2/topics/i18n/
  
- LANGUAGE_CODE = "en-us"
+ LANGUAGE_CODE = "ja"
  
- TIME_ZONE = "UTC"
+ TIME_ZONE = "Asia/Tokyo"
  
  USE_I18N = True
  
  USE_TZ = True
  --- 省略 ---

添加应用程序

添加已存在的软件包和创建新的应用程序。

  --- 省略 ---
  # Application definition
  
  INSTALLED_APPS = [
      "django.contrib.admin",
      "django.contrib.auth",
      "django.contrib.contenttypes",
      "django.contrib.sessions",
      "django.contrib.messages",
      "django.contrib.staticfiles",
+     # 3rd party package
+     "rest_framework",
+     # application
+     "apiv1.apps.Apiv1Config",
+     "shop.apps.ShopConfig",
  ]
  --- 省略 ---