マガジンのカバー画像

Django関連

69
運営しているクリエイター

記事一覧

Djangoでミドルウェアを自作する #457

Djangoでミドルウェアを自作する #457

久しぶりの投稿になってしまいました。
腰の手術で入院していたことに加え、この度エンジニアとして転職することが決まり、次の現場で使われているGO言語のキャッチアップに時間を使っていたためです。

次はGOのアウトプットをしていこうと思ってましたが、現職でとても良い学びがあり、堪らずにDjangoでアウトプットしています。

Webミドルウェアとはミドルウェアという言葉はコンピュータサイエンスの様々な

もっとみる
Django_modelのManagerをオーバーライドしてカスタムする #430

Django_modelのManagerをオーバーライドしてカスタムする #430

Djangoのmodelで特殊な操作を実行するため、Managerをオーバーライドしてカスタムすることがあると思います。

しかしこのManagerにも2種類あって、使い分けなどややこしかったので違いを整理してみました。

以下の2つです。
・Djangoのmodels.Manager
・外部ライブラリdjango_mysqlのQuerySet

Djangoのmodels.ManagerDjan

もっとみる
Celeryでタスク実行されるまでの流れ #422

Celeryでタスク実行されるまでの流れ #422

CeleryはPythonの分散タスクキュー(もしくは非同期タスクキュー)として使用される技術です。分散タスクキューでは、メッセージブローカーを介してタスク(作業の単位)を送受信し、複数のワーカープロセスがこれらのタスクを非同期に実行します。

Celeryの主な用途:
●非同期処理
●分散・並列処理
●スケジューリング
●耐障害性と拡張性

Djangoとも簡単に連携でき、バックグラウンドで計算

もっとみる
Django_フォルダを再帰的に論理削除する #387

Django_フォルダを再帰的に論理削除する #387

Djangoでアプリケーションにおいて、レポート一覧をフォルダに分ける機能を実装しようとしています。今回はフォルダデータを持つモデルと、その削除方法について実装例をご紹介します。

アプリケーションの要件は以下です。

フォルダには複数のレポートを格納

フォルダの中にフォルダを作成可能

フォルダの削除に関する要件は4つ

削除は全て論理削除で行う(物理削除ではない)

削除時に指定するのは1フ

もっとみる
Django_データの組み合わせが一意になるようmodelに制約を付ける #384

Django_データの組み合わせが一意になるようmodelに制約を付ける #384

Djangoの機能に関する簡単なメモです。

Djangoのモデルでは、データベースのスキーマをPythonのクラスとして表現します。各モデルクラスはデータベースのテーブルを表し、属性はそのテーブルのフィールドを表します。

そしてモデルにはMetaクラスというものを定義できます。これはモデルのメタデータを指定するためのものです。例えば、テーブル名やデフォルトのソート順、パーミッションなどを指定で

もっとみる
Django_transaction.atomicでハマった話 #368

Django_transaction.atomicでハマった話 #368

結局自力では解決できなかったのですが、エラー事例の共有としてメモしておきます。

Djangoでモデル操作する際のデフォルトはオートコミットです。つまりcreateやdeleteなどを行うとその都度コミットされます。

ただ、一連の処理を以下のようにtransactionでラップできます。

with transaction.atomic(using=DBの名前): SampleModel.

もっとみる
Django_本番環境構築③_静的ファイルをS3からホスティングする #366

Django_本番環境構築③_静的ファイルをS3からホスティングする #366

本番環境構築シリーズの第3弾です。
第1弾と第2弾は以下です。

前回まででEC2上でアプリケーションを起動しつつ、HTTPS通信でアクセスできるようところまで設定できました。

今回はDjangoとS3の設定を変え、静的ファイルのホスティングをS3から行えるようにしていきたいと思います。

パブリックアクセス可能なS3バケットが1つ準備してある前提です。

ではそれぞれの設定をメモしていきます。

もっとみる
Django_本番環境構築②_EC2で起動したアプリケーションにHTTPS通信する #365

Django_本番環境構築②_EC2で起動したアプリケーションにHTTPS通信する #365

前回からの続きです。

ディレクトリ構成などの前提情報は良ければ上記をご参照ください。
前回までの構成を活かし、アプリケーションをEC2上で起動させてみたいと思います。

前提として、AWSのEC2インスタンスが1つ立ち上げています。仮にもインターネット環境でのテストなので、本来はVPNなどを設定して実施するのが望ましいとは思います。ただVPNは追い追いやってみようと思っているところなので、今回は

もっとみる
Django_ContentTypeモデルとdumpdata, flush, loaddata, 自然キー #364

Django_ContentTypeモデルとdumpdata, flush, loaddata, 自然キー #364

Djangoの少し深い機能についてメモしておきます。

ContentTypeモデルとはdjango.contrib.contenttypes.models.pyに定義されているContentTypeモデルは、アプリケーション内の各モデルに関連するメタデータを格納します。具体的には、アプリケーション名とモデル名の情報が含まれます。

テーブル名はdjango_content_typeで、マイグレー

もっとみる
Django_本番環境構築①_nginxとgunicornでDjangoアプリケーションを動かす #363

Django_本番環境構築①_nginxとgunicornでDjangoアプリケーションを動かす #363

1週間ほど色々と沼にハマっており、更新が遅くなりました。
noteを始めてから最も長期間空けてしまいましたが、ちゃんとした本番環境の構築は初めての挑戦なので、やむなしと思うことにしています。

今回は、本番環境でアプリケーションを運用するためのシステム設計を行い、ローカル環境で動作させてみるところまでです。

本番環境はAWSを想定しており、最終的にはAWSやHTTPS、DNS周りの設定まで完成さ

もっとみる
Docker化したDjangoアプリケーションをEC2で本番デプロイする #362

Docker化したDjangoアプリケーションをEC2で本番デプロイする #362

ついにアプリケーションを本番環境にアップする、ということができました。
まだ調整することが色々ありすぎる状況ですが、ひとまずインターネット経由で自分のアプリケーションにアクセスできたことは嬉しかったです。

手順をメモしていきます。

VPC関連を設定する

まずはネットワーク基盤を整える作業です。

東京リージョンにVPCを作成します。
作成方法はいろいろなブログがあるので割愛しますが、少し悩み

もっとみる
Django_対話型シェルで特定のモジュールを動かしてみる_DJANGO_SETTINGS_MODULE #349日目

Django_対話型シェルで特定のモジュールを動かしてみる_DJANGO_SETTINGS_MODULE #349日目

久しぶりの更新になってしまいました・・!
先週末に数年ぶりの家族旅行に出掛けていたのと、旅行先で子供が胃腸炎になり、家族が順番に罹患していったのが大きかったです。。
また徐々にアウトプットしていきたいと思います。

Djangoの開発業務で使えるTipsを教わったのでメモしておきます。

新たにメソッドを定義した時など、対話型シェルでサクッと動作確認したいケースがあると思います。しかしDjango

もっとみる
Django_管理画面に検索窓を設定する #310日目

Django_管理画面に検索窓を設定する #310日目

Djangoの管理画面に関するメモです。

レコードが増えてきた時などは探すのが大変で、検索を掛けられるようにしたいと思います。Djangoの管理画面はデフォルトでそのような機能を用意してくれています。

class NoteOptions(admin.ModelAdmin): list_display = (‘id’,’author’,’text’,’writed_at’,’status’)

もっとみる
Django_モデルの値に操作を加えてから管理画面に表示 #307日目

Django_モデルの値に操作を加えてから管理画面に表示 #307日目

Djangoの管理画面は非常に使い勝手が良いですが、簡単に使える分、ちょっとしたカスタマイズにもコツが必要です。

表示するフィールドの設定方法などは調べてすぐに出てくるのですが、フィールドの値に少し処理を加えてから表示したい場合の方法が中々見つかりませんでした。

しかし実は簡単に定義できます。
weightフィールドにfloat型の数字が入っていると仮定して、それをint型に直した数字を管理画

もっとみる