Django
こんにちは。今日は少しお願いがあります! DjangoCongress JPの開催地・会場を募集しています。 例年開催しているDjangoCongress JPですが、次回の開催地と会場がまだ決まっていません。とくに東京以外の場所で「ぜひここでやろう!」という方を求めていま…
DjangoなどのWebフレームワークにはマイグレーションという機能が搭載されています。ですがこのマイグレーションという機能の必要性が分かりにくい(いまいちピンときていない人がけっこう多い)ので背景を踏まえて説明します。 マイグレーションとは何なの…
来月の10月7日(土曜日)にDjangoCongress JP 2023をやります! これを読んでくれている、Djangoに興味がある方にお伝えしたいです。 Djangoの面白いイベントです PythonのWebフレームワークDjangoに関するカンファレンスです。年に1回のお祭りです。 今年も…
皆さんこんにちは。 DjangoCongress JP 2023のトーク応募の締め切りは今日です! Djangoの知見がある方、何か共有したいことがある方、会社を知ってほしい方、ぜひご応募ください。 forms.gle あまりハードルは高く考えなくても大丈夫です! この機会にカン…
ShodoがChatGPTに対応しましたね。 最近注目されている自然言語処理技術の一つChatGPT。本記事ではPythonからChatGPTを非同期で扱う方法についてご紹介します。 実はこの記事もChatGPTに書いてもらい、僕が加筆し、Shodoで校正しています。 ChatGPTと非同期…
DjangoCongress JP 2022を11月12日(土曜日)に開催します! そのトークを募集中ですので、ぜひお気軽に応募してください。 締切は 8月12日(金曜日) いっぱいです。 応募フォームはこちら 「私なんて…」と思う方、ご安心ください。今日はトーク応募のポイ…
DjangoのQuerySetでグループごとに最大・最小のデータのみ抽出する方法を紹介します。 この記事はDjango Advent Calendar 2021 3日目の記事です。 グループごとの最大・最小のデータとは何でしょうか? たとえば以下のような場合に必要となります。 ブログ記…
2021年7月3日(土曜日)にDjangoCongress JP 2021が開催されます。 そのイベント当日に、Djangoについて発表してくれる方を募集しています。締切は5月12日(水曜日)です。 djangocongress.jp 今年もイベントの代表として頑張っていますので、応援いただける…
Djangoのマイグレーションで実行される処理(とSQL)を確認する方法を説明します。 先日の記事では「Djangoマイグレーションを無停止で反映する方法」を説明しましたが、そのためにはマイグレーションでどんなSQLが実行されるかが重要になります。 blog.hiro…
Djangoはデータベースマイグレーションの機能を持っています。 ですが、 実際、Djangoマイグレーションってどう使うの? という疑問が多いかと思います。 docs.djangoproject.com この記事では、 マイグレーションを稼働中のアプリケーションに、無停止でど…
django-hijack-admin とDjangoのカスタムユーザーを併せて使うとき、Adminサイトへの登録でハマるので書いておきます。 django-hijackとは、Admin画面から別ユーザーのセッションを乗っ取れるライブラリーです。 個別のユーザーで問題が発生しているときに状…
Djangoのキャッシュ(cache)にはキーを文字列として指定しましょう。 >>> from django.core.cache import cache >>> cache.get("mykey") # OK >>> cache.get("1") # OK >>> cache.get(1) # よくない キャッシュバックエンドの実装によっては数値でも指定で…
DjangoCongress JP 2019というイベントを主催しました。 2018年もDjangoCongress JP 2018 を主催しましたが、今年も主催しました。 全員であわせて130人くらいが参加するイベントになりました。 「130人にもなるとやっぱ人多いなぁ」 と、集合写真を撮ってい…
DjangoでCookieを設定するときは response.set_cookie を使います。 response = TemplateResponse(...) response.set_cookie("key", "value", max_age=3600) 今まで知らずに expires も自分で計算して設定していましたが、 max_age を指定して expires を指…
DjangoGirls Tokyo #4 でコーチをしてきました。 私がコーチをするのは 第1回目 以来です。 djangogirls.org 進め方としては、 Django Girls Tutorial というチュートリアルを参加者の方が進めて学んで、コーチがサポートします。 このチュートリアルはかな…
前の記事ではWSGIアプリケーションをWSGIサーバー(gunicorn)で起動する方法を説明しました。 ここではgunicornを使って、Python製WebフレームワークでできたWebアプリケーションを起動しましょう。 blog.hirokiky.org なぜgunicornなどのWSGIサーバーを使…
DjangoRestFrameworkのSerializer(ModelSerializer)で、フィールドの値を関数/メソッドの結果で返したいことがあります。 これはバリデーションとしてSerializerを使うのでなく、モデルから辞書に値を変換したい場合の話です。 例えば、フィールドの日時が…
Djangoのモデルから親のモデルを取ると(select_relatedなどしていないと)1クエリー実行されてしまいます。 以下のように、親のさらに親を取ろうとすると2クエリー実行されます。 me.parent.parent me.parent の時点で1クエリー実行されて、 parent.parent …
動的にフォームの choices の値を作りたい場合など、フォームの内容のためにクエリーすることはよくあると思います。 でも、フィールドの __init__ でクエリーしてしまうコードを書くとインポート時に実行されてしまうので注意が必要です。 ダメな例 class F…
Djangoで権限管理ってどうやっていますか? Django自体が持つGroupやPermissionはイマイチ業務では使えないというのが実際のところなのではと思います。 そんな悩みを解決するために django-keeper というライブラリーを作りました。 こんな悩みに: DBで権限…
2012Pythonアドベントカレンダー1日目を担当します、取りまとめ役の id:hirokiky です。 この記事では私がDjangoのチュートリアルの次にやってきたことを書きます。 内容としては「Django」に限った話ではなくて、そもそもプログラミング自体そんなにしたこ…
ウィジェットとは、Django で HTML の入力エレメントを表現するためのオブジェクトです。ウィジェットは、 HTML のレンダリングや、個々のウィジェットに対応するデータをGET/POST 辞書から抽出する処理を行います。 http://djangoproject.jp/doc/ja/1.0/ref…
Django 製サイトで TwitterBootstrap を使いたいときはdjango-bootstrap-toolkit を使うのがオススメ。
単一のフォームについて複数回入力するなら FormSet 、 複数種類のフォームを画面遷移なしで入力するなら FormWizard がある。FormWizard で FormSet を使ってみた
オブジェクト更新用のビューのテストをするときに、フォームにすでに入力されている値をテスト したいことがある。 >>> response = self.client.get('/update/1/') response オブジェクトから、いかにフォームの初期値を取るかという問題。
>>> HogeFormSet = modelformset_factory(Hoge) >>> hoge_formset = HogeFormSet() とすると、FormSet(ModelFormSet) が DB に保存されている既存のオブジェクトに束縛されて提供される。 この挙動はオブジェクトの新規作成をするビューで使うには好ましくな…
Django の FormSet についてハマったメモある更新用のビューに FormSet を使いたかった。更新用のビューなので、既存のオブジェクトがある場合は FormSet をそれに対して束縛してやる必要があった。 環境 Django==1.4.1 解法 下記ブログ参考に。 Django mode…
WSGIからの流れを大まかに掴めたのでまとめたい。かなり大まかには、この画像を念頭におけばいいと思う。 今回はDjango1.4を対象にしている。 注意 流れを理解するために読むべきソースコードへのリンクと、その順番をまとめてる。 読みやすさはあんまり考慮…
django.views.generic.base.TemplateViewなどのクラスベースビューの実装を見てみると、head()メソッドが書かれていないように見える。しかしHEADリクエストには対応してる、という話。「TemplateViewはHEAD対応していない」的なお話を聞くことがあるから書…
django-cms で言語別のページを用意しない方法。django-cms のチュートリアル (3. Introductory Tutorial — django cms 2.3 documentation) どおりに導入すると、例えば /tempura というURLに http://example.com/tempura/ http://example.com/en/tempura/ …