(最終更新月:2022年3月)
✔このような方へ向けて書かれた記事となります
「Django shellってなに?どんな時に使えるの?」
「Django shellの操作方法が知りたい!」
「初心者なので、具体例もあると助かるんだけど、、、」
✔当記事を通じてお伝えすること
- Django shell(シェル)とは?Shellを使ってできること
- shell(シェル)の操作方法について
Django shellとは?shell(シェル)を使ってできること
Django shellとは?
Django shell(シェル)とは、ターミナル上でDjangoのモジュールやデータベースとの連携ができる機能になります。
ターミナル上で「python」コマンドにより立ち上がるPythonシェルと似ていますが、通常のPythonシェルですとデータベースとの連携や作成しているDjangoアプリの機能を使うことはできません。
Djangoシェルを使うことでいちいちアプリ上で確認するのではなく、手軽にターミナル上でコードを実行することが可能になります。
Django shellでできること
具体的に、ターミナル上でDjangoアプリの機能が使えるようになると下記のようなことができます。
- コマンドを試すことができる
- ブラウザ上でアクセスできなくてもシェルからはアクセスできる
コマンドを試すことができる
データベースの操作などで、「ちょっと試してみたい」という事は多々あります。
そんな時にいちいちアプリ内でコードを書くのではなく、ターミナル上で手軽にできるのがDjangoシェルです。
Pythonシェルと同様、エラーもターミナル上で表示されるので、コードに不具合があるときも重宝します。
ブラウザ上でアクセスできなくてもシェルからはできる
ローカル環境では、ブラウザ上にエラーメッセージが出てきてもセキュリティ的な問題はありません。
ただ、Web上に公開後、同じ様にエラーの度に詳細がブラウザに表示されるのは問題です。
そのため、公開したアプリではエラーをブラウザで見れなくするのが通常ですが、その分何か不具合があっても原因を突き止めるのが大変です。
そんな時にシェルを使うと短時間でエラーが見つかる場合も多いです。
参考として下記のような場面で重宝します。↓
Djangoシェルを使用することは、初心者の方だけでなく、進めていけば便利さを痛感します。
一度覚えれば操作方法はそんなに難しくありませんので、ここで覚えてしまいましょう。
次章にて具体的な操作方法を解説します。
Shellの操作方法について
Djangoに備わっている「ユーザーモデルクラス」をDjangoシェルから操作していきます。
shell(シェル)を起動する
「manage.py」があるフォルダ内で下記のコマンドを入力して立ち上げます。
python manage.py shell
下記のように表示されればOKです。
Python 3.8.10 (default, Nov 26 2021, 20:14:08)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>>
今後は「>>>」にコマンドを入力していきます。
shell(シェル)を終了する
先にshell(シェル)を終了する方法を伝えます。
下記のコマンドを入力すれば完了です。
>>> exit()
「>>>」を入力する必要はありません。
下記より実際にデータを操作していきます。再度shell(シェル)を立ち上げて次へ進みましょう。
データベースのモデルクラスをインポートする
データベースを操作するには、使用するモデルクラスをインポートする必要があります。
今回使用するユーザーモデルクラスは下記の通りでインポートできます。
>>> from django.contrib.auth.models import User
自身で作成したアプリ内のモデルクラスをインポートする方法は下記のように行います。
>>> from nippo.models import NippoModel
アプリ名「nippo」内の「NippoModel」クラスをインポートしました。
実際にユーザークラスを操作していきましょう。
データを取得する
データを一覧で取得する方法はこちらです。
>>> from django.contrib.auth.models import User
>>> qs = User.objects.all()
変数「qs」には、ユーザーオブジェクトの一覧が保存されています。
「特定のデータだけ取り出したい」場合などは下記の記事で詳しくモデルクラスのメソッドについて解説してますので参考にして下さい。
データを新規追加する
新たにユーザーを新規登録していきます。
ステップ1:オブジェクトを作成します
>>> new_user = User(username="yulikepython", email="admin@itc.tokyo")
ステップ2:パスワードを設定します
>>> new_user.set_password("new-password")
set_passwordメソッドはユーザーモデルクラス特有のものになります。
ステップ3:データベースへ書き込み、保存します
new_user.save()
データを更新・編集する
ステップ1:編集するデータを取得します
>>> editting_user = User.objects.get(username="yulikepython")
ステップ2:編集します
>>> editting_user.email="yulikepython@gmail.com"
「オブジェクト.フィールド名」で各フィールドにアクセスができます。
ステップ3:データベースへ書き込み、保存します
>>> editting_user.save()
データを削除する
データを削除する場合も上記同様、対象のデータを取得する必要があります。
>>> deleting_user = User.objects.get(username="yulikepython")
削除を実行します
>>> deleting_user.delete()
(1, {'auth.User': 1})
まとめ
当記事の内容をまとめます。
Django shell(シェル)とは、通常のPythonシェルとは違い、ターミナル上でDjangoのモジュールやデータベースとの連携ができる機能になります。
Django shell(シェル)を使用することで、作成したアプリ内のコードを試すことや、デプロイ後のエラーを発見することができます。
また、操作方法についても解説してきました。
解説した操作は下記の通りです。
- shell(シェル)を起動する
- shell(シェル)を終了する
- モデルクラスをインポートする
- データを取得する
- データを新規追加する
- データを更新・編集する
- データを削除する
「これってなんだっけ?」というのがあれば、是非前の章に戻って再度確認してみましょう。
✔ウェブアプリを公開したい方へのおすすめ記事