Django でWebアプリケーションを作成してみる その1(ubuntu18.04、python3.6)

DjangoでWebアプリケーションの作成をしてみます。

まず実施事項として「djangoのインストール」、「プロジェクトの作成」、「アプリの作成」、「データベースの変更」といったところを実施して見ます。

インストールする OS は ubuntu-18.04 を使っています。

 

djangのインストール

まずはpythonのバージョンの確認です。

こちらは3.6系を利用しています。

 

次に、djangoのインストールです。

 

ここではDjangoの2.1.1がインストールされました。

 

プロジェクトの作成

djangoのプロジェクトの作成は「django-admin.py」というコマンドユーティリティーで行います。

プロジェクトの雛形を作成することができます。

 

ディレクトリ名を指定しないとプロジェクト名と同じディレクトリが作成され、その下にプロジェクト名と同じ名前で設定ディレクトリが作成されます。

ただ、設定ファイルがこちらに入っているとややこしいので、ベースディレクトリ名と設定ディレクトリ名を分けて作成いたします。

 

これで設定ファイルを「config」としたプロジェクトが作成されました。

設定ファイルとしては以下になります。

settings.py プロジェクトの設定情報を記載している
urls.py URLパターンとビューのマッチング情報を記載
ルーティングファイル
wsgi.py WebbサーバからWSGIインターフェースでDjangoサイトをに接続するための設定を記載

 

アプリの作成

アプリの作成は「manage.py」というコマンドユーティリティーで行います。

このユーティリティーは開発・運用などでしばしば使います。

以下では「job」というアプリを作成しています。

 

作成されたファイルとディレクトリの構成は以下になります。

admin.py 管理サイトに関することを記述
apps.py アプリケーションを識別するための設定を記述
migrations マイグレーションファイルが作成されるディレクトリ
models.py DBなどの構造を表すModelに関する定義やビジネスロジックを記述
tests.py テストに関することを記述
views.py ビューに関することを記述

 

さて、プロジェクトの設定ファイルにアプリを追加します。

これは「job/apps.py」に記載されたクラス名を記述します。

 

 

データベースの変更

次にDatabaseをデフォルトのSQLiteからMariaDBに変更するための設定を行います。

MariaDBのインストールは以下で実施しています。
https://colabmix.co.jp/tech-blog/ubuntu-18-04-mariadb-install/

まず、「config/settings.py」の設定を行います。

初期では以下となっている項目を。

 

以下のように変更します。

データベースでは「MySQL」、「PostgreSQL」、「SQLite」、「Oracle」の4つが設定可能です。

次にpipでmysqlのドライバーをインストールします。

 

MariaDBを使っているので「mysql_config」がないとエラーが出てしまいました。

そこで、以下のライブラリを導入します。

 

気を取り直して再度インストール。

 

無事入りました。

ここで一旦、MariaDBを利用して接続できているかの確認を行います。

 

無事、接続できました。

今回はここまでで、モデルの作成から実際に接続できるところまでを次回に行なっていきます。

【関連記事】
DjangoでWebアプリケーションを作成してみる その2(ubuntu18.04、python3.6)

 

このブログは株式会社CoLabMixによる技術ブログです。

GCP、AWSなどでのインフラ構築・運用や、クローリング・分析・検索などを主体とした開発を行なっています。

Ruby on RailsやDjango、Pythonなどの開発依頼などお気軽にお声がけください。

開発パートナーを増やしたいという企業と積極的に繋がっていきたいです。

お問い合わせやご依頼・ご相談など

関連記事

  1. AmazonLinuxでpyenvを利用してPython3.6の仮想環…

  2. Vue.jsで申し込み同意でボタンをアクティブにするチェックボタンの作…

  3. AWSのLambdaでScrapyを動かす その3 - dynamod…

  4. kibana と Beats (metricbeat)を使ってサーバの…

  5. AWS Lambdaをpython-lambda-localとlamb…

  6. ElasticSearchでjava.lang.OutOfMemory…