サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
WWDC24
djangobrothers.com
Dockerを使ってDjangoプロジェクトを動かしてみたいと思います。 Dockerの概要・特徴 かなり簡単にですがまとめておきます。 Docker - Docker社が提供する、オープンソースのコンテナ型 仮想化ソフト 仮想化 - 実際のマシンを用意しなくても、仮想的にパソコンやサーバを作れる仕組み(パソコンやサーバーの中に、もう1つマシンを作るようなイメージ。Dockerはそれを「コンテナ型」で行う。) コンテナ - 隔離されたプログラム実行環境。コンテナには、稼働しているコンピュータとDockerがやりとりするための最低限の機能しか含まれていないため、とても軽量。 1アプリ=1コンテナで構成するのが慣例 - データベースを使ったWebシステムを構築する場合は、「Webサーバーを担当するコンテナ」と「データベースを担当するコンテナ」の2つのコンテナを動かし、互いにやり取りして1つのシ
クラス内で関数を作るときに出てくるstaticmethodやclassmethodについて説明してみます。 クラスについて、より基本的なことは こちらの記事に書いています。 この記事では、3種のクラス内関数について説明します。 通常のメソッド(インスタンスメソッド) staticmethod(静的関数) classmethod 実装方法 実装方法は難しくありません。それぞれの関数の上に@staticmethodや、@classmethodと記述するだけで、それぞれの関数がstaticmethodとclassmethodとして認識されるようになります。@マークがついたものはデコレータと呼びますが、デコレータ自体の意味は今回は割愛して別の機会に解説します。 今回は、以下のように定義したPersonクラスを例に説明していきます。Personクラスは、初期化メソッド、そして関数(インスタンスメソッ
アグリゲーション(Aggregation)ってなに? アグリゲーションとは、データベースに格納されているデータの個数、平均値、最高値などを調べてくれる機能のことです。Aggregationは「集計」を意味します。 データベースの中から、欲しい情報を取得するときに重宝します。 今回は以下のような例のモデルを使います。値段や評価フィールドを持つBookオブジェクトがあり、BookオブジェクトはAuthorオブジェクトと紐づいています。 models.py from django.db import models class Author(models.Model): name = models.CharField('名前', max_length=190) def __str__(self): return self.name class Book(models.Model): author
モデル同士を紐づける方法は、ForeinKey(1対多)やOneToOne(1対1)などがありますが、今日はManyToMany(多対多)についてです。 ManyToMany(多対多)を作る PersonモデルとHobbyモデルの関係性で考えてみます。 Personは、サッカーやピアノなど複数のHobbyを持つことが考えられますし、逆に、サッカーというHobbyはたくさんの人の趣味となり得ます。 データベースのイメージは以下のようになります。 このテーブルを作成するモデルは以下の通りです。blank=Trueを指定することで、Personは必ずしもHobbyを持たなくてもよくなります。上の画像の例でいうと「ジョン」のような感じです。 models.py from django.db import models class Hobby(models.Model): name = models
Django モデル Django Userモデルへの参照方法(AUTH_USER_MODEL, get_user_modelの使い方) 今回のエントリーでは、Djangoの根幹的な機能であるUserモデルへの参照について整理してみます。 Djangoには標準で備わっている強力なUserモデルが存在し、viewなどからはdjango.contrib.auth.modelsのUserを参照することで利用することができます。 しかし、※Djangoの公式ドキュメントでも言及されている通り、自分のプロジェクトのなかでこのデフォルトのUserモデルをそのまま利用するのは避けるべきです。その場合、独自に定義したCustom Userを作成することになりますが、その場合の最適なUserモデルへの参照はどのように行うべきでしょうか?また、外部のreusableなDjangoアプリを利用したり、他の人が利
DjangoBrothers PythonベースのWebフレームワーク『Django』のチュートリアルサイトです。 レベル別のチュートリアルで、少しずつステップアップすることができます。 徐々にレベルをあげて、実務でDjangoを使えるところを目指しましょう。 ブログではワンポイントの技術解説や最新トピックを更新しています。 Django チュートリアル オリジナルのチュートリアル集です。 様々なタイプのプロジェクトをたくさん作ることで、 少しずつDjangoを使える実力が身につきます。
開発したDjangoアプリを、Herokuというサービスを使ってWebサーバーにデプロイする方法を説明します。デプロイができれば、自分のサービスが世界中に公開され、多くの人にアクセスしてもらうことができるようになります! django-herokuという、便利なライブラリが公開されたおかげで、Djangoアプリは以前と比べてだいぶ簡単にデプロイできるようになりました。とはいえ、デプロイにはsettings.pyファイルの編集、git、Webサーバー等、初心者にとっては馴染みの薄い知識が少なからず必要となってくるため、つまづいてしまう人も多いのではないかと思います。 そこで今回は、初心者を対象として、Djangoアプリをデプロイする方法について説明していきたいと思います。単に手順だけではなく、それぞれのファイルがどんな役割を果たしているのかも合わせて説明していきます。 デプロイするまでの手順
DjangoでForeignKeyを使う時は、オプションの引数としてrelated_nameを指定することができます。また、状況によっては必ず指定しなくてはいけない場面があります。 related_nameはどういう働きをしているのか、説明したいと思います。まずは、ForeignKeyを使って、FoodモデルとPersonモデルを紐づけるところからです。 models.py from django.db import models class Food(models.Model): name = models.CharField(max_length=100) def __str__(self): return self.name class Person(models.Model): name = models.CharField(max_length=100) favorite_foo
Djangoのモデルフィールドを作成する際のオプションとして、blankとnullを指定することができます。 基本的には、blankはDjangoのフォームからの投稿が空かどうかを判定するもの、nullはデータベースの中身が空かどうかを判定するものになります。それぞれ、blank=Trueとnull=Trueのときに、対象が空であることを許容することになります。 なんとなくイメージは掴めると思いますが、blankとnullはどちらも同じような処理をしているようにみえます。なぜこの二つのオプションを別々で指定する必要があるのでしょうか?具体的な例を用いて検証していきましょう。 blankとnullの値を場合分けすると、以下の4つのパターンが存在します。カッコ書きになっているのはデフォルトの値のことで、モデルフィールドにオプションを指定しない限りはそれぞれFalseが指定されることになります。
モデル同士を紐づけるときに、ForeignKeyやOneToOneFieldを使いますが、その際、バージョン2からは引数としてon_deleteを指定することが必須となりました。 指定しないとTypeError: init() missing 1 required positional argument: 'on_delete'というエラーメッセージが出てしまいます。 on_deleteの意味 on_deleteとは、参照するオブジェクトが削除されたときに、それと紐づけられたオブジェクトも一緒に削除するのか、それともそのオブジェクトは残しておくのかを設定するものです。 実際の使用例 例えば、こんなモデル設計があったとします。ForeinKeyを使用して、Storyオブジェクト(小説)はAuthorオブジェクト(作者)を参照しています。 models.py from django.db im
このページを最初にブックマークしてみませんか?
『DjangoBrothers - Django2の実力をつけるチュートリアルサイトDjangoBrothers』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く