Django

django-extensionsの runscript コマンドでスクリプトを実行する

django-extensionsには、スクリプトファイルを実行するための runscript というコマンドが用意されている。 このコマンドを使うと、Djangoのコンテキスト(つまり、Djangoのsettings.pyが適用された、 django.setup() を実行済みの状態)で、Pythonのスクリ…

DjangoCongress JP 2023のチケット販売が開始されました

DjangoCongress JP 2023 のチケット販売が開始されました。私はスタッフ兼登壇者として参加します。 django.connpass.com パーティーでは色々な人と話せるのでおすすめです。久しぶりにパーティー有りの会なので楽しみです。

Djangoのcacheフレームワークで複数の値をまとめて取得、更新する

試したバージョンはPython3.10, Django 4.2.4, pymemcache 4.0.0 Djangoのキャッシュフレームワークを使うと、memcachedやRedisなどをキャッシュサーバーとして利用できる。 複数の値をキャッシュサーバーから読み書きする際、 cache.get() cache.set() を何…

Djangoで文字列をテンプレートとして使う

Djangoでテンプレートエンジンを使う場合、テンプレートはファイルとして用意する場合が多いですが、文字列を入力とすることもできます。 The Django template language: for Python programmers | Django documentation | Django 試したバージョンは、Pytho…

DjangoのSECRET_KEYを生成する

Djangoの settings.SECRET_KEY は django.core.management.utils.get_random_secret_key 関数を使っているので、プロジェクト生成時のSECRET_KEYと同等の値を生成したい場合は、Pythonでこの関数の実行結果を利用できる。 シェルから、以下実行 python -c "f…

Djangoで他のユーザーに成り代わる機能を提供するdjango-hijackを試す

ウェブサービスの運営で、「特定のユーザーでログインして画面の動作を試す」ことをしたい場合、django-hijackというパッケージで簡単に実現できます。 試したバージョンは、Python 3.10, Django 3.2, django-hijack 3.1.2 です。 ドキュメント django-hijac…

Djangoの自動主キーフィールド

Djangoではモデルクラスに primary_key=True のフィールドを明示的に定義しない場合、自動で id という名前で主キーのフィールドが追加されます。 Automatic primary key fields | Django documentation このとき使われるフィールドのクラスは、Django 3.1以…

書籍紹介:実践Django Pythonによる本格Webアプリケーション開発

@c_bata_ さんの著書、『実践Django Pythonによる本格Webアプリケーション開発』をいただいたので紹介します。 実践Django Pythonによる本格Webアプリケーション開発 (Programmer’s SELECTION)作者:芝田 将翔泳社Amazon 本書の内容 Djangoの基本機能、モデル…

Djangoフレームワークのセッションの有効期限

Djangoフレームワークのセッションの有効期限について調べる必要があったのでまとめておく。 試したバージョンは、Python 3.9、Django 3.2.4。 ドキュメント Djangoのセッションについてのドキュメント https://docs.djangoproject.com/ja/3.2/topics/http/s…

Djangoの管理コマンドを上書き(置換え)する

Djangoフレームワークの管理コマンド(manage.py スクリプトのコマンド)をオーバーライド(上書き、置換え)する方法について。 管理コマンドの登録の仕組み Djangoのドキュメントには、管理コマンドのオーバーライドについての記載があります。 https://docs.d…

『現場で使えるDjango管理サイトのつくり方』を読みました

『現場で使えるDjango管理サイトのつくり方』 著者のakiyokoさんから献本いただきました。 Djangoの管理サイト(Django Admin)にフォーカスした内容の本です。 https://www.amazon.co.jp/dp/B08HVJPRR8/?tag=tokibitossoft-22www.amazon.co.jp 対象の読者 こ…

1つのVMインスタンスに複数のアプリを置くような構成を考える

VPSなどの環境で、1つのVMインスタンスにたくさんDjangoアプリをホストしたいなー、という場合の構成を考えたりしてました。 自分で運用しやすい形にまとまったので、メモを残しておきます。 要件 1台のVMで複数種類のDjangoアプリを動かす VMのメモリは2~4…

DjangoでLOGGING設定をしているときに、IPythonの補完に不具合が出る場合の対処

Djangoに限ったことではないのですが、PythonのloggingでrootのハンドラをDEBUGにしていると、IPythonの補完を実行した際にparsoという依存ライブラリのログが出てしまい、カーソル位置がずれてしまうことあります。 例えば、Djangoで以下のように settings.…

オープンソースカンファレンス2019 HokkaidoでDjangoの紹介をしました

6/1に札幌で開催された オープンソースカンファレンス2019 Hokkaido で、django-ja名義でDjangoフレームワークの紹介をしてきました。 資料はSpeakerDeckにアップロードしています。 Djangoフレームワークの紹介_OSC北海道2019 - Speaker Deck 日本のDjango…

DjangoのSubqueryとOuterRefを使ってサブクエリを組み立てる

DjangoのORMで、サブクエリを使う方法について。任意のSQLであればrawメソッドを使えばよいのですが、なるべくORMのAPIを使いたい。 DjangoのORMでは任意の位置にサブクエリを使えるわけではないですが、例えば「テーブル単位での問い合わせ結果にサブクエリ…

Djangoのマイグレーションでスキーマ変更とデータ変更を分けたほうがよいか

Djangoのマイグレーションは、1つのマイグレーションで複数のタスクを実行できます。 スキーマを変更する処理のあとに、データのマイグレーションを実行、といったようなものです。 意味のある変更をまとめるのは便利そうに思えるのですが、落とし穴があった…

GoogleAppEngine上で動作しているDjangoアプリをStackdriver Debuggerでデバッグする

AppEngineで動かしてるDjangoアプリをStackdriver Debuggerでデバッグする手順について。 Python 用 Stackdriver Debugger の設定 | Stackdriver Debugger のドキュメント | Google Cloud ドキュメントには、Django 1.Xの話しかなく、手順も良くなかったので…

GoogleAppEngine上でDjangoフレームワークのログをStackdriver Loggingに流す

PythonのloggingモジュールからStackdriverにログを流す手順はドキュメントに書かれている。 Setting Up Stackdriver Logging for Python | Stackdriver Logging | Google Cloud Djangoフレームワークを使っている場合は、Djangoのロギング設定を考慮する必…

Djangoのデータベースルーターのallow_migrateの挙動について

Djangoフレームワークでは、データベースルータークラスを作成して、 settings.DATABASE_ROUTERS に設定することで、モデル毎に使用するデータベースを変えたりできます。 データベースルーターにはいくつかのメソッドを実装しますが、その中の一つ、 allow_…

Python3.7+Django2.1のアプリケーションをGoogleAppEngine/Standard環境にデプロイする

GoogleAppEngineのStandard環境でPython3.7のランタイムがベータ版で利用できるようになったので、試していました。 ドキュメントにはFlaskアプリケーションをデプロイする手順が記載されていましたが、Djangoアプリケーションだと少し設定が追加で必要だっ…

オープンソースカンファレンス2018 HokkaidoでDjangoの紹介をしました

7/7にオープンソースカンファレンス2018 Hokkaidoに行ってきました。 www.ospn.jp 北海道のOSCにはここ数年は参加し続けてますが、セミナーや展示の数も多く、毎年楽しめてます。 今回もdjango-ja名義でDjangoフレームワークの紹介をしました。資料は去年の…

DjangoCongress JP 2018に参加しました

DjangoCongress JP 2018にスタッフとして参加しました。 djangocongress.jp Djangoフレームワークのみをテーマとした100人以上の規模のイベントは、日本では初めてだったように思います。 半年前から準備してきたイベントですが、無事終了できてよかったです…

DjangoフレームワークとVue.js (Vuex)を使ってアプリケーションを作る

以前作成した DjangoフレームワークとVue.jsを使ってアプリケーションを作る - 偏った言語信者の垂れ流し の、Vuex対応版です。 よかったらGitHubでStarをつけてください! github.com controllerとしていた部分を、VuexのStoreに書き換え、Vueコンポーネン…

NGINX UnitでDjangoアプリケーションを動かしてみる

NGINX Unitは、NGINXの開発元が作ってるアプリケーションサーバー。 http://unit.nginx.org/ Pythonのアプリケーションも動かせるとのことなので、Djangoアプリで試してた。 試した環境は、Vagrant上でUbuntu 16.04 LTS、Python 3.6.2(deadsnakes PPA)、Djan…

Django REST FrameworkのフィールドでJSONを扱う

DjangoのモデルにTextFieldでJSON文字列を保存しておき、APIをDjango REST Frameworkで提供する例。 JSONデータを保存して、読み込み時にもJSON形式のまま提供したかった。 restframeworkのシリアライザのFieldクラスを継承し、JSONを扱うフィールドを定義し…

DjangoフレームワークとVue.jsを使ってアプリケーションを作る

DjangoフレームワークとVue.jsでアプリケーションを作る例として、テキストを編集保存するシンプルなノートアプリケーションを作ってみました。 github.com Djangoのサーバーサイドレンダリングを使いつつ、Vueを組み合わせる一例として参考になればよいかな…

モデルクラスを継承してメソッドを追加する(proxyを使う場合)

この記事は Django Advent Calendar 2017 の7日目の記事です。 Djangoのモデルクラスを継承した場合、Metaに特に指定が無ければ、マルチテーブル継承となり、migrateを実行すると2つのテーブルができます。 モデルを継承して単一のテーブルにする方法は2つあ…

Djangoフレームワーク組込みのドキュメントジェネレータ(django.contrib.admindocs)の紹介

この記事は Django Advent Calendar 2017 の6日目の記事です。 tell-kさんの記事 を読んでいて、「そういえばDjangoには組込みのドキュメントジェネレータがあるんで紹介しておこう」と思ったので書くことにしました。 タイトルの通り、 django.contrib.admi…

Hue meetupでDjangoの話をしてきました

Hadoop WebUIソフトウェアのHueのmeetupでDjangoの話をしてきました。 connpass.com HueはDjangoフレームワークで作られているのですが、どのように使われてるとか、拡張の仕方とかを紹介しました。 スライドは、slideshareにアップロードしています。 Djang…

Django1.10以降のDeferredAttributeとフィールドへのアクセス

Djangoのモデルクラスにフィールドやメソッドを定義しておいて、さらに属性値を代入していて、この値を取得するコードを書く場合。 メソッドのほうはgetattrでとればいいのだけど、同様にDjangoのフィールドのほうはget_fieldでフィールドを取得しないといけ…