DRF勉强(Vol.1)创建后端项目
首先
我会参考以下书籍来创建样本,以学习DRF(Django REST framework)。最终目标是根据书中的示例创建Vue+DRF。
-
- 可在現場使用的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]
名称 = “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
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",
]
--- 省略 ---