Posts about Python

AWS S3 bucketでDjangoプロジェクト内のファイルを管理する方法

Django内でファイル管理をする事も可能ですが、ファイルが多くなる事が想定される場合は外部のストレージと連携して管理した方が良い・・・という事で、AWSのS3 bucketを利用して、画像などその他ファイルを管理できるように連携を行ってみました。 前提情報 ・AWS CLIは設定済み・AWS IAMでユーザー作成済み、アクセスキーも作成済み※AWS CLIとIAMユーザー・アクセスキーの作成は前回の記事を参考にどうぞ・WindowsのOSで、Powershellを利用しています インストールするモジュール django-storagesは、djangoを外部ストレージに連携できるようにする為に必要なモジュールです。boto3は、AWSとの連携に必要なモジュールです。django-environは、Djangoプロジェクトのsettings.pyに機密情報を直接記載せず、envファイルから値を読み込めるようにするモジュールです。※これらモジュールをインストールした後は、アプリケーションデプロイの時に必要なrequirements.txtを更新しておきましょう Djangoのsettings.pyにenvironを組み込む manage.pyがあるフォルダ層に.envファイルを作成。.envファイルの中に、機密情報を記入します。 settings.pyの中には以下のようにenvironの設定と、値の読み込み、importを記述する必要があります。 コマンドラインでAWSのS3 bucketにファイルを連携させる AWSのS3 bucket画面で、ファイルが連携されているか確認 コンソールで確認すると、バケットの中にオブジェクト(ファイル)が無事に連携されている事が確認できました

ユーザーがログイン済か判定し、ページを表示させる方法

皆様ごきげんよう。Djangoでログイン機能を実装した後、ログイン後に表示させたいページをログインしていないユーザーが表示できないようにするにはどうすればよいかについてメモを残しておきます。少しでも参考になりますと幸いです。 importの必要なモジュール(記入場所はviews.py) 判定情報を記入する場所(views.py) もしログインしていない場合の判定と処理を定義する方法(settings.py) これにより、ログインされていない状態であれば必ずLOGIN_URLに設定されているURLにリダイレクトされるようになります。

Django:ファイルアップロードの時、特定のファイル形式のみを許可したい場合

皆様ごきげんよう、今回は特定のファイル形式のアップロードを許可する実装方法について書き残しておきます。少しでも参考になりますと幸いです。 前提情報 models.pyのサンプル まずは日記に、画像を付けられるようにclass Diaryの中でvalidators機能を利用します。 forms.pyのサンプル views.pyのサンプル if form.is_valid()の部分で、models.pyで指定したFileExtentionValidatorが実行されます HTMLのサンプル 必ずenctypeを指定する事 これで違うフォーマットのファイルをアップロードして投稿しようとすると、エラーが表示されるようになりました。

Django:HTML上でデータ値のラベル名を日本語で表示させる方法

皆様ごきげんよう、今回はデーターベースで設定している値の名前を日本語に表示させる方法について書き残しておきます。少しでも参考になりますと幸いです。 前提情報 ラベルの設定方法(サンプル) models.pyで記載しているclassの中に、以下のような形式でラベルを設定する事が可能です。 ※class Mediaの方にverbose_nameを設定してあげないと、以下のようなエラーがでます。TypeError: FileField.init() got multiple values for argument ‘verbose_name’

Django:データベースにある複数の値をhtml上で参照する方法

皆様ごきげんよう、本日はDjangoで利用しているMysqlに登録されているデータをHtml上で参照するにはどうすればよいかについてナレッジを残しておきます。少しでも参考になりますと幸いです。 前提情報 ー Mysqlを利用しています。ー 既にデータが登録できるようにモデルの設定(models.py側)ができている。 データの取得に関わるファイル (1)views.pyファイルではデータベースから辞書型のオブジェクトで値を引っ張ってくる記述をする。(2)urls.pyで、データを利用するファイルとviews.pyで設定した関数を紐づける。(3)HTML上で{{辞書のキー}}を宣言する事により、データベースから取得したデータを取り扱えるようになる。 views.pyの記載方法(サンプル) たとえば、ArticlesとLanguageのclassをmodels.pyで宣言している場合。ArticlesViewの中で、複数のデータ取得を行う為の設定を行えます。 urls.pyの記載方法(サンプル) HTMLでデータ表示する為の記載方法(サンプル) HTMLの中に、{% %}や{{ }}を利用してviews.pyで取得したデータを表示させる事ができます。views.py側で取得したデータは辞書型なので、for loopを利用して中身を表示するようにhtml側で記述します。もしデータが無かった時の為に{% empty %}と書き、その後には代わりに表示する文章を入れます。そして最後にfor loopを閉じる{% endfor %}を記述してあげればOKです。 このようにして複数のモデル情報を1つのViewを通して取り扱う事ができるようになりました。

Djangoで複数のモデルを扱う方法

皆様ごきげんよう。Djangoのmodels.pyの中で複数モデルを取り扱うのに苦戦した為、解決方法をこちらに載せておきます。少しでも参考になりますと幸いです。 models.pyの中に記載する内容 models.pyではデータベースで取り扱いたい項目を各classごとに記載します。そしてdjangoの管理画面にログインすると、アプリ名配下にはmodels.pyで宣言したclassの内容が表示されます。その中で1つ別のclassに、その他classで宣言した内容を含める事も可能です。わかりやすい例としては、ブログ登録フォーム内にタイトル、カテゴリー、フォーム、タグが含まれているイメージ。 (例)django管理画面に表示されるデーター タイトル ※単体のタイトルデータ用モデルー カテゴリー ※単体のカテゴリー用モデルー フォーム ※単体のフォーム用モデルー タグ ※単体のタグ用モデルー ブログ投稿フォーム ※このテーブル内には、タイトル・カテゴリー・フォーム・タグ情報すべてを含めています。 1つのclassに、別に宣言した複数のclass内容をまとめる方法 そして以下は、複数のclass内容を1つの別class内に記載するサンプルです。 データベースに反映させる models.pyで追加したデータ情報はちゃんとデータベース側にも反映させる必要があります。 管理画面に行くと、このように複数の項目をまとめる事が可能になりました。

DjangoのWEBアプリをHerokuでデプロイする方法

皆様ごきげんよう。構築中のサービスをAWSとHerokuのどちらでデプロイするか悩みましたが、一旦規模が小さいサービスを展開する為、インフラ管理が楽なHerokuを選択してみました。デプロイする為の初期設定と、デプロイ時にエンカウントした問題がいくつかあったのでナレッジを残しておきます。少しでも参考になりましたら幸いです。 前提情報 ー コードはGithubで管理しています。ー Powershellを使用。ー Herokuコマンドも利用できるように、Heroku CLIをインストール済。 CollectStatic問題 Staticファイルを一か所にまとめるプロセスがHeroku側で走るのですが、一か所にまとめられないとエラーがでる場合があります。この場合は対応方法を検討する必要がありますが、一旦この処理自体を実行しないように設定する事も可能です。その際はコマンドプロンプト経由で以下コマンドを実行。 ※設定を戻す際には1を0に設定すればOK Tkinterモジュールが見つからない問題 そもそもTkinterモジュールを自分の意志で設定していなかったのですが、プロジェクト全体のmodule.pyファイルを確認した所、一番最初の行にDjango側の初期設定の関係で記載されている事が確認できました。TkinterモジュールはPythonでGUIを取り扱うのに必要なモジュールで、Herokuでは取り扱っていないモジュールでした。今回のプロジェクトではGUIを利用していないので、この行はコメントアウトしておきました。※結構ネットではまっている方が多いのでHeroku側で対応できるようにした方が良いかもです ローカルのMysqlに設定されているSocketで接続できません問題 ローカルPCで動作確認をする際には問題なく動作しましたが、デプロイする際にそもそもMysqlをHeroku側で準備しておかないとエラーが出てしまいます。その為、アプリケーション側とHeroku側で事前にDBの対応が必要です。 まずはHeroku側で、JawsDB MysqlをAdd-Onsマーケット経由でインストールします。2025年8月時点では無料プランがあったので、そちらを利用してみました。 Powershellで、コマンド「 heroku config」と実行するとDBのURLも含まれた情報が取得できるのでそこで接続URLを確認します。接続URLはDjango側でDB設定しているところのURLの値として記入(プロジェクト全体の設定が記載されているsettings.py、もしくは.envファイル)。 ちゃんとJawsDB側で、ユーザー設定を行っておきましょう。[…]

DjangoでSqlite3以外のDB(Mysql)を利用する方法

皆様ごきげんよう、本日はDjangoでデフォルト設定されているデータベース(Sqlite3)以外のデータベースを利用したい場合の設定方法について手順を残しておきます。少しでも参考になりましたら幸いです。 Mysqlを利用する場合の手順 まずは利用しているPCに対してMysqlを公式サイトからダウンロードして、インストールして下さい。mysqlにログインする時の管理者ユーザーをインストール時に設定する事になります。MySQL :: Developer Zone デフォルトでは、プロジェクト全体の設定を管理しているsettings.pyの中にSqlite3の設定が記載されております。この部分をMysql用に修正すればOK。 変更前のコード 変更後のコードsettings.py内の冒頭あたりに「import dj_database_url」を記載してください。そして別途PowerShell(コマンドプロンプト)で「pip install dj_database_url」を実行。 管理者ユーザーでログインをしてみる PowerShellで新しくタブを開き、以下コマンドをうってログインできるか確認する。以前のMysqlで利用できたmysql -u rootは現在セキュリティ強化の為、設定を変更しない限り利用できない模様。 このコマンドの後にパスワードが要求されるので、問題なければmysqlにログインが可能です。[…]

Django管理画面を日本語にする方法

皆様ごきげんよう、最近Djangoを開発に使い始めて管理画面を確認した際に項目を日本語に修正したかった為、その時に行った作業内容を残しておこうと思います。少しでも参考になれば幸いです。 管理画面を全体的に日本語設定にしたい場合 初期設定ではDjangoは英語ですべて表示されています。全体的な言語を日本語に変更したい場合、以下のように修正を加えてください。(ファイル:Djangoプロジェクト内で全体設定が記載されている方のsettings.py) こうする事で、時間も日本時間で表示する事が可能です。 管理画面内のユーザー情報の項目を修正したい場合 プロジェクト内のmodels.pyファイルに、取り扱うユーザー情報のクラスを記載しているのですが、その中で以下のような形式で書けば項目を日本語に変更する事が可能です。※今回は省略しますが、ユーザー情報を取り扱う部分に関しては別のサイトに色々と記載されていますので、気になる方はご確認下さい。

Google OAuthを利用したログイン実装

皆様ごきげんよう、Google OAuthを利用して開発中のサービスにログインできるようにしたいと思います。ログイン機能を開発した際のメモを残しておきます、少しでも参考になりますと幸いです。 ※この記事はまだ未完成の状態です。途中までのステップをまとめておりますのでご了承ください。 環境 Windows 11 HomeDjangoPython3※Django側のコードはpython Google Cloud側での事前準備 Google Developers Console (Google Cloud)にログインしますhttps://console.cloud.google.com/ APIとサービスの項目をクリックして、新規にプロジェクトを作成する。自分はサービス名をプロジェクト名として登録しました。 登録したプロジェクトを選択。メニューにある認証情報をクリックして、同意画面を構成ボタンをクリック。あとは必要な情報を記入していってください。 次はメニューにあるブランディングボタンを押すと、先ほどインプットしたような項目が出てきますがアプリケーションのホームページ、そしてデベロッパーの連絡先を記入する項目があるのでそれを記入して保存ボタンを押します。ホームページには、開発中なので一旦ローカルサイトのURLを入れました。[…]

Latest Comments

No comments to show.