Django

Djangoのタイムゾーンサポートの動作について

Djangoのタイムゾーンサポートについてメモ。settings.USE_TZをTrueにすると有効になる。 試したのはPython 2.7, Django 1.6.2。 Django1.6だと、プロジェクト新規作成時のsettings.pyでUSE_TZはTrueに設定されている。(ドキュメントではデフォルトでは無効…

django-ftpserverを公開しました

昔作ったunboxftpdを名前変えてリファクタリングし、django-ftpserverとして公開しました。 django-ftpserver 0.3.5 : Python Package Index Djangoアプリケーションとして追加すると、FTPサーバーを起動するコマンドが追加されます。 ユーザー認証はDjango…

Django 1.7で追加されるAppConfigの紹介

この記事はDjango 1.7 alpha2の段階で書いています。 Django 1.7では、アプリケーションのロードや管理の仕組みが変更されます。 ドキュメントも追加されています。 Applications | Django documentation | Django 大雑把な説明 大雑把に説明すると、 アプリ…

Djangoでフォームセットを使って複数のレコードを一括編集する

1つのモデルの複数レコードを編集するのなら、ModelFormのフォームセットを生成するといいのだけど、modelformset_factoryという関数があるのでそちらを使用してみる。 ドキュメントに載っていないのでバージョンアップで動かなくなる可能性あり。 modelform…

DjangoでSOAPウェブサービスを実装する

PythonでSOAPを扱う場合、いくつかサードパーティモジュールがあるのだけど、久しぶりに調べてみたら、Spyneというのがそこそこ活発に開発されてるようだ。 spyne - RPC that doesn't break your back. どうやら、 soaplib の開発を停止して rpclib というモ…

django-edamameというライブラリを公開しました

django-edamameはDjangoで複数のビュー関数、ビュークラスをまとめる機能を提供します。 django-edamame 0.1 : Python Package Index このアイデア自体は数年前から持っていて、実装コードではちょくちょく使ってた。 複数のビューをまとめて似たような機能…

Djangoでサイトの利用者ごとに翻訳の言語設定を切り替える

Djangoで、サイトの利用者ごとに言語設定を切り替えたい。 DjangoはセッションやCOOKIEの値を参照して、どの言語に翻訳するかを決める仕組みをミドルウェアで提供している。 言語設定の検出メカニズム - 翻訳 ― Django 1.4 documentation フォームから送信さ…

Djangoでモデルクラスを差し替え可能にする

Django1.5からdjango.contrib.authのユーザーモデル(User)を差し替えることが可能になっているが、この機能を実現しているのがMetaサブクラスのswappableオプション。 このオプションを使うと、settingsの設定でモデルクラスを差し替える機能をアプリケーシ…

Djangoのログ出力をFluentdで集める

Djangoのログ出力をFluentdで集める方法について。 ログレベルがERRORやWARNINGのものはSentryを使うのが便利だと思うけど、それ以外のINFOやDEBUGはSentryに入れるには数が多すぎるのでどうするか考えてて、最初はローカルのファイルに書き出していた。 け…

Django1.6のsettings.pyと管理サイト

Django1.6から、startprojectで作成されるデフォルトのsettings.pyの内容がずいぶん変わってスッキリしました。 以下インラインでコメント。 """ Django settings for myproject project. For more information on this file, see https://docs.djangoprojec…

bpmappersのテスト実行をDjango1.6に対応させました

bpmappersのv0.7はDjango1.6で動作することを確認済み。 この機会にtoxのtestenvをちょっと書きなおしてみました。 次のバージョン以降は、Python2.5のサポートは切ろうと思います(tox+virtualenv+pipのバージョンを合わせるのが面倒) 代わりに、Python2.6、…

Django1.6とDjango1.4.10がリリースされた

昨日の夜にDjango1.6とDjango1.4.10がリリースされました。 Django 1.6 released | Weblog | Django DBのコネクション保持の機能が入ってるのはちょっと嬉しい。Python3も正式対応になりました。 また、Python2.6対応の最終バージョンになるそう。 Transifex…

Sentryをインストールして実行してみる

複数台あるアプリケーションサーバーのエラーログを集めて見たり、メール通知するのだとSentryは結構使いやすそう。 http://sentry.readthedocs.org/en/latest/ とりあえず、動かしてみる。 インストール virtualenvでeasy_installのオプション指定にてイン…

Django REST frameworkとbpmappersを組み合わせて使う

DjangoでREST APIを簡単につくるためのライブラリは、django-tastypie以外にDjango REST framework(以下rest_framework)というのもある。 Django REST framework これとbpmappersを組み合わせて使う方法を調べたのでまとめる。 rest_frameworkモジュールのソ…

django-tastypieとbpmappersを組み合わせて使う

Djangoでtastypieを使ってREST APIを作る際に、bpmappersをどうやって組み合わせればよいか調べてた。 tastypieのCookbookのページにカスタムの値を追加する例がある。 Adding Custom Values tastypieのソースコードを読んだところ、dehydrateメソッドで値の…

Djangoのsettingsの分割と構造化について

Djangoの設定ファイルであるsettingsの分割、構造化について。 開発、ステージング、本番、テストなど環境ごとにsettingsの内容は変える必要があるので、settings.pyを分割したり、共通部分をまとめたりする。 settingsの分割についてはdjangoprojectのWiki…

DjangoのORMでINSERTのSQL文字列を取得する

タイトルの通り。 DjangoのORMでSELECTのSQLを取得するのは、QuerySetクラスのquery属性を参照すればいいのだけど、INSERTの場合は簡単に取得できる方法がなさそうに見えた。 内部APIをゴニョゴニョすることで、何とか取得できる。 以下、コード例。 myapp/m…

PyCon APAC 2013のチュートリアルでDjango入門の講師をやります

タイトルの通り、PyCon APAC 2013というイベントの前日(金曜日)に、チュートリアルデイというのがあり、そこで講師をすることになりました。 私の担当は、チュートリアルB(Django入門)です。 詳細、参加申込はconnpassのページでどうぞ。 PyCon APAC 2013 チ…

django-jenkinsを使ってDjangoのプロジェクトをJenkinsでテスト実行する

DjangoのプロジェクトをJenkinsでビルドする場合、django-jenkinsを使うと便利。 PyPIからdjango-jenkinsをインストールできる。 $ pip install django-jenkins jenkins用のsettingsファイルを用意する Djangoのプロジェクトにjenkins用のsettingsファイルを…

guestbookアプリをDjango1.5に対応させた

bitbucketに置いてたguestbookアプリをDjango1.5で動くように修正した。 対応前 tokibito / sample_nullpobug / source / django / myproject / (rev:37c9c8d) Django1.0〜1.3ぐらいで動作するコード。汎用ビューがまだ関数だし、staticfilesも使っていない…

Django1.0がPyPIからインストールできなくなっている

数カ月前からなんですが、Django1.0系はPyPIからpipやeasy_installでインストールができなくなっています。 Django1.0系の最新版は1.0.4で、PyPIにレコードはありますが、アーカイブが登録されていないのが原因のようです。 $ pip install Django==1.0.4 Dow…

Djangoのrestructuredtextフィルターでblockdiagを使う

Djangoのcontribには、テンプレートでrestructuredtextなどのマークアップをHTMLに変換してくれるフィルタのセット、django.contrib.markupがあります。 https://docs.djangoproject.com/en/dev/ref/contrib/markup/ restructuredtextフィルターを使う場合は…

DjangoとMySQLで緯度経度を扱う

やりたかったことは、指定した緯度経度(GPSから取得した現在位置)に近い場所の検索と距離の算出でした。 DjangoだとPostGIS+GeoDjangoを使えばできますが、今回はデータベースがMySQLであるため、filterでdistanceが使えませんでした。 GeoDjango Database A…

Southのマイグレーションのマージ

Mercurialなどのバージョン管理システムでブランチを使っていて、DjangoとSouthを使っている場合、Southのマイグレーションがブランチ間で衝突して、マージしないといけないことがよくある。 その際の解消手順についてメモ。 試したのはDjango1.4.1, South0.…

Django1.4のバルクインサートを試す

Django1.4で、やっと標準でバルクインサートがサポートされた。 QuerySetにbulk_createというメソッドが増えている。 単純なモデルを作って、動きを見てみる。 試したのはMySQL5.5、Django.1.4.1 myapp/models.py class Item(models.Model): name = models.C…

DjangoのORMでサブクエリやrawを使う

試したのはDjango1.4.1。 こういう親子関係のモデルがあったとする。 myapp/models.py from django.db import models class Parent(models.Model): name = models.CharField(max_length=30) def __unicode__(self): return '{}, {}'.format(self.name, getat…

django.contrib.staticfilesを使う

しばらく仕事でDjangoをあんまり使ってなかったので、思い出しつつ新しい機能を勉強しつつ使ってます。 django.contrib.staticfilesはDjango1.3から使える機能。django-staticfilesというパッケージで公開されていたものがDjango本体に取り込まれた形。 http…

django-newauthの使用例

ずいぶん前になるけど、同僚のイアンが社内のDjango用認証フレームワークを公開してた。 django-newauth Documentation — django-newauth 1.0 documentation django-newauthを使う例をbitbucketに置きました。 tokibito / sample_nullpobug / source / djang…

WindowsMeでDjangoを動かしてみる

某勉強会への参加のためにノートPCを用意する必要があったんですが、ちょっと古いノートPCで遊んでみようと思って押し入れから引っ張りだして来ました。 昔実家で使われていたCOMPAQのPresario1400です。購入したのは11年ほど前です。 このPCは当時でもスペ…

bpmappersを使ってDjangoテンプレート上の記述を少しだけ簡単にする

DjangoでA データをいくつか作って、テンプレートで表示させる際にManyToManyフィールドがあると、途中の参照でManagerが入ってしまう。 その際にModelMapperを使って記述を少し簡単にしよう、という話。 まあ実際に使える場面は多くない。 myapp/models.py …