tixture55’s diary

主にプログラミング関係の日記です。

django1.11.8のファイル構成やsettings.pyの設定

ファイル構成

djangoでは他の言語のFWにはない特徴的なファイルがあります。

__init__.pyです。これは空のファイルとして置いておきます。なんのためにこのファイルがあるのか調べると、

まず,1つ目は__init__.pypythonスクリプトがあるディレクトリを表す役割をなします.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'",

},