Django

Django のダミーデータを大量投入するスクリプトを対話環境に対応させるシェルスクリプトで自動化した

やっぱりだるかった Django アプリのダミーデータを大量投入するスクリプトをかく - AtAsAtAmAtArAのをコピペ運用でもよかったけど、コピペ条件かわったりいちいちもうそういうのだるかったので、やっぱりデータを初期化するところまで自動化することにした…

Django でメールを送信と確認

メールを送信する。Python 標準モジュールやライブラリにもありそうだけど、Django 組み込みであるのでそれを利用する。 日本語1.4::メールの送信 — Django 1.4 documentation つかう ドキュメントのままです from django.core.mail import send_mail send_m…

Django のコマンドを作って定期的に実行する

なんてことはないが、ちょっとハマったのでメモ 流れ Django の python manage.py some_command をつくる crontab に登録する それだけなんだけど、復習も込めて Django でカスタムコマンドをつくる 単純なスクリプトならそのまま Python のスクリプトとして…

Django アプリのダミーデータを大量投入するスクリプトをかく

モデルのフィールドが変わったり名前変わったりしそうだし、開発初期だと sqlite でサクっとつくって壊したりする。というときでも、とりあえずサイトを動かしたりするためになんらかのダミーデータを大量投入する必要はある。で、つくってたりした。データ…

Django でページング

よくある話、ページングしたかった。で、実際そういう機能がある。前は djang-pagination っていうのをつかったことがあったけど 1.3 くらいから使えなくなったとか、また、まあ別にそんなに難しい話でもなさそうだったので普通にフレームワークの機能で実装…

django-debug-toolbar は便利(とVirtualboxのVMで表示にハマった件について)

class base view がわからない 存在は前から知っていたけど、まあ別にいいやって思ってて使ってなかった。でも久々の Django でいろいろ忘れてるし、あと 1.5 を使うのはいいけど class base view が mixin しまくってて拡張や仕様変更や保守に強そうという…

Web アプリケーションフレームワークとしての考え方(Djangoを例に) #python_adv

2012 Pythonアドベントカレンダー(Webフレームワーク) - connpass 6日目担当です。軽めにざっくりとした入門的なことをかきます。ほんとうはもっと早めの日程にかけたらよかったんですが、ぼーっとしてたらこうなってしまいました。すみません。 この記事を…

拙い自分がコードレビューをする場合に気にするポイントはなんだろうという話

いつもはコードレビュー受ける側です コードレビューなんてできる立場じゃねーわと思いつつも、忙しくなってくるとなおざりになってくるし、しかしなにもしないのもいやなので「僕がレビューしてもいいですか?」って聞いたら「まあいいんじゃないの」ってこ…

Django の QuerySet をソートしようとして遠回りした話

ある QuerySet で名前を ascii でソートしようとした いろいろ事情があって QuerySet をリストに変換→ソート→QuerySet に再変換しないといけないと思い込んでいた 参考::API Only - Stack Exchange # リストに変換するついでに name でソートする sorted_hog…

Django の発行する ORM のクエリでリレーションによってはサブクエリを使っている件と、QuerySet を評価するときのパフォーマンスについて

サブクエリの件 Blog:1 Entry:n みたいなモデルのリレーションがあるとする。ちょっと違うけど。 print(Hoge.objects.filter(entry__in=blog.entry_set.all()).query) 擬似的なクエリはこんな感じ。 SELECT `entry`.`id`, `entry`.`ctime`, `entry`.`utime`,…

Django の Storage の exists が SuspiciousOperation でハマったけど別にそれ問題じゃなかった話

Storage を使う必要があるからつかってるんだけど、その Storage で実装されているものと os モジュールで実装されているものでは内部的に若干挙動が異なることがある。というかことなってハマった。 絶対パスか相対パスかって話 具体的には MySQL でこんな…

pyconjp2012 行ってきたよ各セッション感想 #pyconjp

感想をメモする おつかれさまでした たぶんいまごろ運営スタッフは打ち上げでしょう。正式にはまだ3日目のSprintもあるけど、自分は参加しないしこういうでかいイベント(YAPCやHTML5ConfやRubyKaigiやPHPカンファレンス)は行ったことがないので新鮮だった。…

Django の South で migrate したときに south.exceptions.GhostMigrations

migrate がなんかうまくいかない コマンドは普通 python manage.py migrate --setting=settings... 例外がでた。同じ症状のが StackOverFlow にあったのではる API Only - Stack Exchange Traceback (most recent call last): File "manage.py", line 14, in <module></module>…

Django の Storage よくわかんないけど無理やり握りつぶして粉砕した話(から、できるだけ例外処理しないロジックをつくりましょうの話)

Django の Storage ってのがあんまりよくわかっていない とりあえず公式ドキュメントは以下 カスタムのストレージシステムを作成する — Django v1.0 documentation 基本的にはなんかこう OS のファイルシステムみたいな感じにさわれる?まあストレージってい…

DjangoのClass Based Veiw(クラスベースビュー)についてちょっと軽くコードリーディングした

これからは関数ベースじゃなくてクラスベースになるらしい Note Prior to Django 1.3, generic views were implemented as functions. The function-based implementation has been deprecated in favor of the class-based approach described here. という…

Python/Djangoやってて少しは例外処理に慣れてきた気がする

油断していると 500 エラーで落ちる なんかちょっと機能をつくったり改修していたりすると、その場では動いても、なんらかの形でデグレったり違う改修によって入力される想定されるデータとは異なるものがはいってきたりする。なので、例外処理必要。油断し…

Southでハマりまくった話

仕様検討と実装検討……のはずガッ! いろいろあって DB がなんかうまく最新状態にならなくてハマりまくった。以下メモ South とは Django の DB を管理するツールです。マイグレーションツール。よくわかんないけど、複数人で MySQL とかで管理するときにいち…

Southでmigrateするときに一瞬ハマった話

あるブランチで models.py が変更されていた そういうときにいちいち drop database; とかするのはダルいので South というマイグレーションツールを使う。PyPI と公式ドキュメントは以下 South 0.8.2 : Python Package Index South migtation するためのラ…

テンプレートのインデックス、あとforループで爆死した話

おれがアホやった こんな感じのよくあるテンプレートかいた <ul> {% for book in books %} <li/>{{ book.title}} <li/>{{ book.author }} {% endfor %} </ul> で、こんなエラーがでた Caught TypeError while rendering: 'Book' object is not iterableえ、なんでって思ってたら…

ForeignKeyとfilterのメモ

自己責任で あってるか検証しようとして簡単なModelつくろうとしたけどなんかうまくいかないからメモがき ForeignKeyは1:Nなのは知ってる BlogModelが1としてEntryModelがNならEntryModelにForeignKeyをはる この場合 blog.entrymodel_set でクエリセットが…

ForeignKeyのメンバーを取ってこれる件

ForeignKeyのリレーションはたいへん たとえばこんな models.py があるとする class User(models.Model): name = models.CharField(max_length=100) class Hoge(models.Model): hoge = models.CharField(max_length=100) moge = models.ForeignKey(User) こ…

formのcleanするときはcleaned_data返せば良い&forms.ModelFormはオーバーライドっぽくできる

まあ公式ドキュメント読めばいい 参考::フォームやフィールドのバリデーション — Django v1.0 documentation 具体例 class HogeForm(forms.ModelForm): # intのフィールド hoge_int = forms.IntegerField(label=u'番号', required=False) # char のフィール…

「サーバーサイドの知識の無さに全俺が泣いた」レベルの入社当時の人に読ませたら少しはアドバイスになったであろうPythonとDjangoの前提知識メモ

前提知識大杉。なので自分が入社当時のスペックで知らなかったことを概説的に一気にまとめてみようと思う。これが誰か初学者の役に立ったら幸いです。 当時のスペック 中学校のころBasicに触れるものの、randomにlineひいただけ 高校のころ情報の授業でn進法…

QueryDictをどうにかして拡張してハッシュ化したパスワードでログインしたかった話

パスワードのハッシュ化は基本 まあそりゃ平文で保存するはずないのであるユーザーがあるパスワードをつくったときはハッシュ化します こんなmodels.pyがあるとする from django.db import models class User(models.Model): name = models.CharField(u"名前…

ManyToManyFiledを含む箇所のユニットテストを通す

結論 オブジェクトのidを渡せばよかった こんなコード ダミーです。BaseTestの部分はだいたいunittestを継承している軽いクラスです(といってもおれが実装できるはずもない) class HogeAPItest(BaseTest): """あるAPI""" def setUp(self): super(HogeAPItest…

$.ajaxのscccessとerrorと、DjangoのHttpResponse

$.ajaxしたらsccessとerrorの処理を書かなくてはいけない コールバックですね $.ajax type: "GET" data: q: $(@).val() in_reply_to_status_id: localStorage.in_reply_to_status_id url: "http://192.168.56.101:8000/update_status" #url: "http://127.0.0…

Djangoで静的ファイルを扱う(開発環境)

静的ファイルって? css とか javascript とか image です。 こんな風にディレクトリを掘ります atasatamatara@dev:~/skz2_proj$ tree . |-- README |-- __init__.py |-- config.py |-- data_skz.db |-- manage.py |-- settings.py |-- skz2 | |-- __init__.…

Djangoでgunicornをデーモンで動かす

deamontoolsとか使うのかとおもった。がんばってdaemonとかでググってた。別に標準であったのでいいや #プロジェクトルートへ移動 cd skz2_proj #これで起動 gunicorn_django -D これだけ。virtualenvwrapperを使っているので、そもそもvirtualenv環境に入っ…

models.CharFileldでエスケープを無効にする

標準だと自動でエスケープしてくれて便利 なんだけど、たとえばこういうテキストが入ってくるときに自動エスケープされるとちょっとかなしい @xxxxx %gt;%gt;%gt;%gt;%gt;%gt;%gt;%gt;%gt;%gt;%gt;%gt;%gt; (超えられない壁) %gt;%gt;%gt;%gt;%gt;%gt;%gt;%g…

CharFiledにつっこんだテキストを@やハッシュタグに対応するためにカスタムテンプレートフィルターをつくった

models.CharFiledは勝手にテキストノードっぽい感じでつっこんでくれる だからエスケープとか考えなくていいけれど、その代わり逆にinnerHTML的にあるテキストに対して書き換える動作をしたかった。そのためにはカスタムテンプレートを自作する必要があった…