こんにちは,ちゆりです。
個人的にはpythonのフレームワークはFlaskを使うことが多く,自分の好みなのですが,「そろそろdjangoも覚えておくのもいいな。」と思ったのでdjangoをサクッと導入してみた。
- djangoのインストール導入
- プロジェクト(アプリ)の作成
- プロジェクト(アプリ)の起動・立ち上げ
django2.x(django2.0系)で行っていきます。
djangoのインストール・導入
djangoをインストールする前に仮想環境を構築することをおすすめしています。
僕は普段,virtualenvで仮想環境を構築しています。
導入方法にお悩みの方は以下の記事で3分間で導入完了できます。
では,早速djangoをインストールしていきましょう。
$ pip3 install django
そして,プロジェクトの作成を行います。
*この際のプロジェクト名(今回の場合はTestSite)は任意でOK
これによりプロジェクトディレクトリが作成され、必要なファイルが自動生成される
$ django-admin startproject TestSite
作成されたプロジェクトディレクトリ内でwebアプリのテンプレートを作成
*この際のアプリ名(今回の場合はmyapp)は任意でOK
$ cd TestSite
$ python3 manage.py startapp myapp
データベースを扱う場合は プロジェクトディレクトリ内で ,以下のコマンドを実行
$ python3 manage.py migrate
これで一通りのプロジェクトファイルが揃い、設定が完了です。
djangoのmodels.pyの書き方
djangoのmodels.pyとは
Djangoのアプリケーションとデータベースで、情報のやり取りを行う際のクラスの定義を行う。
「ORマッパー」がdjangoにはあるため、データベース操作といえばのSQLをほとんど触ることなくデータベースを操作することができる。
もちろんデータベースなしでdjangoを使うことも可能
models.pyの書き方
雛形は以下のよう書く
from django.db import models
# Create your models here.
class Reporter(models.Model):
full_name = models.CharField(max_length=70)
def __str__(self):
return self.full_name
class Article(models.Model):
pub_date = models.DateField()
headline = models.CharField(max_length=200)
content = models.TextField()
reporter = models.ForeignKey(Reporter, on_delete=models.CASCADE)
def __str__(self):
return self.headline
models.XXFieldでフィールドタイプを指定してモデルを定義可能です。
▼Articleクラス
pub_date:日付
headline:文字列(最大200文字)
contents:テキストボックス
reporter:Reporterモデルへの紐付け (on_delete=models.CASCADEでReporterモデルが削除された場合紐付けられたインスタンスも一緒に削除することを指定)
Fieldの詳細は以下の記事を参考にするとわかりやすいです。
https://qiita.com/nachashin/items/f768f0d437e0042dd4b3
https://qiita.com/okoppe8/items/a1149b2be54441951de1
そして最後の
def __str__(self):
return self.headline
では管理画面等で表示したい文字を返しています。
実際に作っていったほうがイメージが付きやすいですね。以下の記事がわかりやすいので参考に。https://www.naretora.work/entry/django-models-str/
(今回の場合はheadlineの値を返しています。)
作成したモデルの有効化
models.pyに追加したモデルの反映を行うためには、<プロジェクトディレクトリ>/setting.py
を変更します。
INSTALLED_APPS
の配列に追加します。(使用するアプリケーションの反映)INSTALLED_APPS
にはデフォルトで以下のアプリケーションが存在します。
- django.contrib.admin
- 管理サイトアプリ
- django.contrib.auth
- 認証アプリ
- django.contrib.contenttypes
- コンテンツタイプフレームワーク
- django.contrib.sessions
- セッションフレームワーク
- django.contrib.messages
- メッセージフレームワーク
- django.contrib.staticfiles
- 静的ファイルの管理フレームワーク
その下に"<アプリ名>.apps.<アプリ名>Config
"を追加します。
(今回の場合"myapp.apps.MyappConfig
"となる)
よってINSTALLED_APPS
は
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'myapp.apps.MyappConfig',
]
となる。
アプリケーションの追加が終わったら、変更の反映(マイグレーション)を行います。これを忘れずに行いましょう。
マイグレーションは,プロジェクトディレクトリ直下(この場合TestSite直下)で実行すればOK
*この際のアプリ名(今回の場合はmyapp)は必要であれば適宜作成したアプリ名に置き換える
$ python3 manage.py makemigrations myapp
そして続けて
$ python3 manage.py migrate
これで反映完了です。
エラーコードが出た場合はプロジェクト名、アプリ名がしっかり指定されているか確認してみましょう。
djangoアプリの起動・立ち上げ
実際にアプリを立ち上げてみないとイメージがなかなかつきませんね..。
ということで,早速アプリを立ち上げてみましょう。manage.py
のあるディレクトリ内で以下のコマンド
$ python3 manage.py runserver
その後, http://127.0.0.1:8000/
へアクセスを行うとdjangoのアプリケーションの起動が確認できるかと思います。
このようなページが表示されるかと思います。
Djangoの管理画面へログイン
アプリを立ち上げた後にhttp://127.0.0.1:8000/admin
へアクセスを行うと管理画面のログイン画面が表示されるかと思います。
Django管理画面
このままでは,ユーザー名,パスワードを入力してもログインできませんので管理者の追加を行います。
$ python3 manage.py createsuperuser
- Username: 空白だとデフォルトのユーザー名となります。
- E_mail: 入力しなくても構いません。(エンターキーでスキップ可)
- Password: 必ず入力しましょう。(2回入力を行います)
これらを入力し終えたらアプリを立ち上げhttp://127.0.0.1:8000/admin
へアクセスを行い,設定したUsernameとPasswordを入力すると,管理画面へログインできます。
Djangoのパスワード・ユーザー名を忘れた
これはあるあるですね。パスワードやユーザー名を忘れた場合でも慌てることはありません。
まずは,ユーザー名を確認します。ユーザー名はdb.sqlite3
に格納されていますのでDBの情報からユーザー名を確認します。
$ sqlite3 db.sqlite3
sqlite> select username from auth_user; //ユーザー名が出力されます
sqlite> .q //一旦SQLiteから抜けます
ユーザー名を取得したらこのユーザーに対してパスワードの変更を行います。
$ python3 manage.py changepassword <ユーザー名>
これで,ユーザー名の確認とパスワードの再設定完了です。
いつも通りログイン画面でログインできるかと思います。
アプリケーションの具体的な作成方法については,今後記事を更新していく予定です。
まずは,Djangoのインストールからプロジェクトの作成までの流れでした。
Djangoについて学びたい方へ
書籍で学びたいなら
DjangoのWebアプリの設計・作成はもちろん、Webサーバー・アプリ周りの知識も幅広く扱ってくれています。データベースの知識、クラウドの知識、セキュリティの知識も同時に習得でき、初心者にはぜひおすすめの書籍
Djangoについて深く知りたいという方におすすめしています。
ややプログラミングの知識がないと理解が難しいかもしれません。
pythonが書ける方には非常にタメになるDjangoアプリ開発におすすめ書籍でした。
オンライン授業で学びたいなら
僕はオンラインスクールはUdemy をおすすめします。定番の授業からマニアックな授業まで幅広く扱っているので、学びたいことは大体あります。今回はPython+Djangoの授業をおすすめします。Djangoの基礎から応用までこの授業で学べます。
実際にWEBアプリを作成し、公開するところまで親切に教えてくれます。
【徹底的に解説!】Djangoの基礎をマスターして、3つのアプリを作ろう!
★次に読んでほしい記事
(実際にWebページの表示をさせていきます。)
コメント