django1.11.8のファイル構成やsettings.pyの設定
ファイル構成
djangoでは他の言語のFWにはない特徴的なファイルがあります。
__init__.pyです。これは空のファイルとして置いておきます。なんのためにこのファイルがあるのか調べると、
まず,1つ目は
__init__.py
はpythonスクリプトがあるディレクトリを表す役割をなします.2つ目の役割としては必要なモジュールをimport
するなどの初期化処理を記載し,初期化の役割を担う役目があります.
と書いてありました。名前のとおり、初期化に関するファイルとして必要なようです。
djangoでは__init.pyがあることによって、importしたいモジュールが複数のディレクトリに散在している場合、この__init__.pyを置くだけでそれらのimportをするという機能を担います。
これは個人的には画期的な機能です。「あれ、このモジュールどこにあったっけ?パスはええと、cdしてっと・・」この思考をしなくてはならないコストがなくなります。賛否両論あるかと思いますが、私的はGOOD!な機能です。
settings.pyの役割
読み込むMiddlewareや扱うDBのID、passwordなどを設定します。Mysql5.6ではデフォルトでsql_modeのデフォルト値がSTRICT_TRANS_TABLESになったので、空の値をinsertしようとすると怒られる。にもかかわらず、django側でsql_modeの設定がないと、下記エラーが吐かれる。
WARNINGS:
?: (mysql.W002) MySQL Strict Mode is not set for database connection ‘default’
HINT: MySQL’s Strict Mode fixes many data integrity problems in MySQL, such as data truncation upon insertion, by escalating warnings into errors. It is strongly recommended you activate it. See: https://docs.djangoproject.com/en/1.10/ref/databases/#mysql-sql-mode
これを出さないようにするには、settings.pyのDATABASESに下記のような設定を追記します。
'OPTIONS': { 'init_command':
"SET sql_mode='STRICT_TRANS_TABLES'",
},