LoginSignup
0
4

More than 1 year has passed since last update.

[Django]プロジェクト前にやっておいた方が楽な設計

Last updated at Posted at 2022-05-22

この記事のメリット

  • ソースコード管理が楽になる
  • 多人数のプロジェクトのときにコンフリクトを起こしにくくなる
  • 大幅な変更にも対応しやすい
  • ファイルが細かく分かれているためloggingで発見しやすい

viewsの構成作る

startappでsampleディレクトリを作ることを仮定する

sample/
    ├ views.py
    ├ src/
       └ first_func/
            └ first_func_get.py
              first_func_post.py

views内にある1つの関数に対してMethodで呼び出す関数を変更する。
例えば下のようにgetが飛んできた場合はfirst_func_get()という関数をfirst_func_post.pyから呼び出す。

その他の認証ユーザーのみや共通的なロギングなどもviews内の関数に書くかデコレーターを使うのがおすすめ。

views.py
from .src.sample.first_func_get import first_func_get
from .src.sample.first_func_post import first_func_post

def sample(request):
    if request.method == "GET":
        return first_func_get(request)
    elif request.method == "POST":
        return first_func_post(request)

通常であればviews.pyに各処理と全く同じように書く。

first_func_get.py
from django.shortcuts import render

def first_func_get(request):

    return render(request,'sample/sample.html')

このようにファイルを関数が毎に細かく書くことでloggingで出力するときに確認が容易になる

共通で使う自作ライブラリ、フレームワークの管理

Djangoをmanage.pyのあるディレクトリから見てPathを指定する。
問えば下のようにlibというディレクトリにありライブラリをimportするときは

views.py
from lib.ファイル名 import 呼び出したい関数

のように記述する

ディレクトリ構成を考える

project/
    ├ lib/
       └ samplelib.py

ほぼ全ての関数に使う処理を考える

libディレクトリに入れるライブラリは共通で使うを処理を行うものを入れる
例えば毎回処理に掛かる時間を計測するライブラリやrequestの中身やreturnの中身を毎回編集するような処理。

settingsをカスタマイズする

settings.pyはなるべく最初に細かくカスタマイズすることで開発、運用を効率的に行うことが容易になる。

CICD向けに設定を変える

CICDを効率的にやるためにデプロイ時とローカルで行う処理を環境変数で切り替えられるようにする。
例えばDebug変数やデータベースのパラメーターなどは優先的に環境変数に切り替える。

PYTHONPATHの設定をする

PYTHONPATHを設定することでimport文を短くすることができる
これは好みなので必須ではない

loggingの設定をする

settings.pyにloggingの設定を記述することでログの管理がだいぶ楽にやることができる

setting.py
logging.basicConfig(
    level=logging.DEBUG,
    format='[%(levelname)s][LineNo.%(lineno)d][FileName:%(filename)s]: %(message)s',
    datefmt='%m/%d/%Y %I:%M:%S %p'
)

出力

[DEBUG][LineNo.43][FileName:views.py]: loggingしたいメッセージ

まとめ

ここに書かれているおすすめの設定は一部だけれどもこれだけでもだいぶソースコードの管理や修正作業、運用保守も楽になってくる。
質問があれば受け付けるのでメッセを飛ばして欲しい。

0
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
4