【ヒント】Django便利コマンドとコードスニペット

By khoanc, at: 2023年9月9日11:31

Estimated Reading Time: __READING_TIME__ minutes

[Tips] Django useful commands and code snippets
[Tips] Django useful commands and code snippets

Djangoは、高レベルのPythonウェブフレームワークであり、その堅牢性、スケーラビリティ、および迅速な開発能力で知られています。開発者はこれを使用して、効率的に機能豊富なウェブアプリケーションを作成できます。しかし、Djangoの無数の機能やコマンドを習得することは、特に初心者にとって困難な作業となる可能性があります。

このチートシートは、Djangoを征服するためのロードマップです。ワークフローを合理化しようとするベテランの開発者であっても、Djangoの道のりを歩み始めた初心者であっても、この簡潔で包括的なリファレンスはあなたの頼もしい仲間となるでしょう。Djangoの広大なエコシステムを、すぐに実装できる一口サイズの、実行可能なコマンドとヒントに凝縮しています。

この記事では、Djangoチートシートの世界を深く掘り下げます。Djangoプロジェクトの管理のための主要なコマンドとコードスニペットを調べます。

 

一般コマンド

 

python manage.py startproject projectname  # 新しいプロジェクトの作成
python manage.py runserver  # サーバーの実行
python manage.py startapp appname  # 新しいアプリケーションの作成
python manage.py migrate  # データベースのマイグレーション
python manage.py migrate app_name # アプリケーションのデータベースマイグレーション
python manage.py makemigrations  # 新しい変更に対するマイグレーションスクリプトの作成
python manage.py makemigrations app_name  # アプリケーションの新しい変更に対するマイグレーションスクリプトの作成
python manage.py showmigrations  # すべてのマイグレーション履歴の表示
python manage.py showmigrations app_name  # アプリケーションのすべてのマイグレーション履歴の表示
python manage.py createsuperuser  # スーパーユーザーの作成
python manage.py shell  # Djangoシェルのオープン
python manage.py collectstatic  # すべての静的ファイルをstaticフォルダに収集 (デフォルトのディレクトリ名は`static`)
python manage.py test  # Djangoテストの実行、現在のディレクトリ内のすべてのテストメソッドとテストクラスを探します。
python manage.py dbshell  # psqlコマンドラインインターフェースのオープン
python manage.py help  # ヘルプコマンド

 

Django Extensionsコマンド

 

python manage.py shell_plus  # Django shell_plusのオープン
python manage.py show_urls  # すべてのURLの表示
python manage.py runserver_plus  # 詳細情報付きのサーバーの実行
python manage.py graph_models  # データベーススキーマの出力

 

高度なコマンドとコードスニペット

 

マイグレーションのテクニック

 

python manage.py migrate app_name zero  # アプリケーションを最初のマイグレーション状態に戻す
python manage.py migrate app_name 0004 --fake  # アプリケーションのマイグレーション状態を0004状態に設定するが、実際にはデータをマイグレーションしない。


これは、データマイグレーションのテストとカスタマイズに非常に役立ちます。CharFieldなど、新しいカラム長の変更を含むデータベースマイグレーションがあるとします。しかし、データベース管理者はこれが緊急であるため、既にデータベースを更新しています。開発者は新しいマイグレーションを作成し、マイグレーションの状態を新しい状態に設定する必要があります。そして、実際にはデータベースをマイグレーションしたくありません。--fakeオプションを使用して、データベースのマイグレーション状態を設定できます。


クエリのquery属性の出力

 

>>> queryset = User.objects.all()
>>> print(queryset.query)
SELECT "auth_user"."id", ... FROM "auth_user"

 

クエリをExplainする

 

>>> queryset = User.objects.all()
>>> print(queryset.explain)
Seq Scan on...(cost=0.00..10.40 rows=40 width=1779)

 

BaseModelクラス

 

from django.core import serializers
from django.db import models
from django.forms.models import model_to_dict
from django.utils import timezone
from django.utils.functional import cached_property


class BaseModel(models.Model):
    class Meta:
        abstract = True

    id = models.AutoField(primary_key=True)
    created_at = models.DateTimeField(default=timezone.now)
    updated_at = models.DateTimeField(auto_now=True)

    def __str__(self):
        return f"{self.pk}"

    def to_json(self):
        return serializers.serialize("json", [self])

    def to_dict(self):
        return model_to_dict(self)

 

参考

Tag list:
- Database
- Tips
- Tips and Tricks
- queryset query
- dbshell
- startapp
- fake migration
- shell_plus
- queryset query print
- django commands
- runserver
- createsuperuser
- django useful commands

Subscribe

Subscribe to our newsletter and never miss out lastest news.