Windowsでpipのインストールソースを設定する
PyCharmやコマンドプロンプトで共通して有効なpipミラー設定を行うには、以下の手順を実行します。
Win + R→%APPDATA%を入力し、エクスプローラーを開くC:\Users\<ユーザー名>\AppData\Roaming\pipディレクトリを作成- その中に
pip.iniファイルを作成し、以下を記述
[global]
index-url = https://pypi.douban.com/simple/
trusted-host = pypi.douban.com
ターミナルによるPython仮想環境の管理
Windowsで仮想環境を効率的に扱うため、virtualenvwrapper-win を使用します。
pip install virtualenvwrapper-winを実行- システム環境変数に
WORKON_HOMEを追加し、値に仮想環境の保存先パス(例:C:\venvs)を指定
主なコマンド:
mkvirtualenv -p python3.6 myproject_env # Python 3.6の環境作成
workon # 環境一覧表示
workon myproject_env # 環境有効化
deactivate # 環境終了
rmvirtualenv myproject_env # 環境削除
pip install django==2.0.7 # Django 2.0.7をインストール
Djangoプロジェクト構造の整備
「路飛学城」バックエンドプロジェクトのディレクトリ構成は以下の通りです:
luffyapi/
├── logs/ # ログファイル保存用
├── luffyapi/
│ ├── apps/ # アプリケーションモジュール
│ ├── libs/ # サードパーティライブラリ
│ ├── settings/
│ │ ├── dev_settings.py # 開発用設定
│ │ └── prod_settings.py # 本番用設定
│ ├── utils/ # 共通ユーティリティ
│ ├── urls.py # ルートURL設定
│ └── wsgi.py
├── scripts/ # 開発用スクリプト
├── dev_manage.py # 開発サーバ起動用
└── prod_manage.py # 本番サーバ起動用
BASE_DIRの修正とアプリパスの追加
開発設定ファイルでプロジェクトルートを正しく認識させ、カスタムアプリをモジュール検索パスに追加します。
# luffyapi/luffyapi/settings/dev_settings.py
import os
import sys
BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
sys.path.insert(0, os.path.join(BASE_DIR, 'luffyapi', 'apps'))
Djangoのカスタムロギング設定
コンソール出力とファイル出力の両方に対応したロギング設定を追加します。
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'verbose': {
'format': '{levelname} {asctime} {module} {lineno} {message}',
'style': '{',
},
'simple': {
'format': '{levelname} {module} {lineno} {message}',
'style': '{',
},
},
'handlers': {
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'formatter': 'simple',
},
'file': {
'level': 'INFO',
'class': 'logging.handlers.RotatingFileHandler',
'filename': os.path.join(BASE_DIR, 'logs', 'luffy.log'),
'maxBytes': 300 * 1024 * 1024,
'backupCount': 10,
'formatter': 'verbose',
'encoding': 'utf-8',
},
},
'loggers': {
'django': {
'handlers': ['console', 'file'],
'level': 'INFO',
'propagate': True,
},
},
}
loggingモジュールによる例外記録
カスタム例外ハンドラ内でDjangoロガーを使用してエラー情報を記録します。
# luffyapi/utils/logger_config.py
import logging
logger = logging.getLogger('django')
# luffyapi/utils/exception_handler.py
from rest_framework.views import exception_handler as drf_exception_handler
from .logger_config import logger
def custom_exception_handler(exc, context):
response = drf_exception_handler(exc, context)
if response is not None:
logger.error(f"API Exception: {response.data.get('detail', str(exc))}")
return response
# settings/dev_settings.py
REST_FRAMEWORK = {
'EXCEPTION_HANDLER': 'luffyapi.utils.exception_handler.custom_exception_handler'
}
データベースユーザーと権限の管理
MySQLにおけるユーザー管理と権限付与の手順です。
- rootユーザーでMySQLにログイン
- 既存ユーザー確認:
SELECT user, host FROM mysql.user; - 新規ユーザー作成と権限付与:
CREATE USER 'cql'@'%' IDENTIFIED BY 'Cql123456'; GRANT ALL PRIVILEGES ON luffy.* TO 'cql'@'%'; - 権限反映:
FLUSH PRIVILEGES;