読者です 読者をやめる 読者になる 読者になる

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的にあるテキストに対して書き換える動作をしたかった。そのためにはカスタムテンプレートを自作する必要があった…

Djangoで他のオブジェクトをそのまま保存したかった

経緯 スカンディナヴィア半島2(Twitter Web クライアント)を作るためにDjangoでTweepyからとってきたオブジェクトをそのまま保存したほうがいいと思った tweetpy でとれたobjectをDjangoで保存したい→pickleしよう - Togetter 結論 無理だった。理由は2つ そ…

#読んだ というサイトをリリースした

どんなサイト? URLをポストして記録するだけのサイトです。 環境 Djangoで素直に作りました。検索にSolrを使うところだけちょっと頑張りました。ソースコードはgithubに公開してありますし、gitベースで管理してました。 Django==1.3.1 BeautifulSoup==3.2.…

Djangoでgunicornでnginxでバーチャルホストの設定をした

下記を参照したら簡単だった 参考:: Gunicornの設定 インストールする。Viruralenv環境にpipかな pip install gunicorn Djangoのsettings.pyのInstalled appに追記 'gunicorn', 起動 python manage.py run_gunicorn これでgunicornでDjangoのプロジェクトが…

DebianでDjangoでsyncdbしたときにMySQLが見つからないエラーが起きた

Ubuntuだと簡単だったのに 普通にこういれていた sudo apt-get install mysql-server sudo apt-get install python-mysqldb これで今まではうまくいってたんだがなんかImport Errorがでた raise ImproperlyConfigured("Error loading MySQLdb module: %s" % …

DjangoのModels.pyでfilterとgetを組み合わせる

あるurlでありかつあるuserであるインスタンスをとってきたかった models.pyはこんな感じ class Url(models.Model): url = models.CharField(u"url", max_length=1024) title = models.CharField(u"title", max_length=1024) user = models.CharField(u"ユー…

DjangoでMySQLなサイトでのSolr環境構築メモ

Solrとは なんかすごいOSSの検索エンジンであるLuceneを元にしたREST風になんか楽ができる検索サーバー。サーバーはJavaでできているが、クライアントはいろいろなスクリプトで取り出せるらしい 構築環境 Ubuntu 11.10 MySQL インストール とりあえずhomeにw…

DjangoでMySQLを使うメモとか

環境 Ubuntu 11.04 インストール 普通にapt sudo apt-get install mysql-server sudo apt-get install python-mysqldb MySQLの設定 /etc/mysql/my.cnf の [mysqld] に追加 default-character-set=utf8 character-set-server=utf8 skip-character-set-client-…

正規表現とか重複とかハマったとことかのメモ

forms.py from hoge.models import User import re class CreateProfileForm(forms.ModelForm): checkbox = forms.CharField(label=u'規約に同意する', widget=forms.CheckboxInput()) class Meta: model = User fields = ('name',) def clean_name(self): n…

モデルのメソッドとか

覚書 なんかmodel.py class Hoge(Models): mogera = ....... def check_hogera(self): mogemoge = 1 return mogemoge があったとする。Viewでの使い方は def nanka(request): hoge = Hoge.objects.get(pk=pk) hoge.check_hogera などと使える インスタンスの…

idという変数を使っていてTypeErrorでハマった

こんなviews.pyかいてた リファクタリングしていた def thread(request,answer_id): '''QAスレッドの閲覧と投稿''' user = get_user(request) is_answered = Answer.objects.filter(user=user,question__pk=id).count() > 0 if request.method == "GET": que…

forms.pyでバリデーションするときにハマった

こうなった こんなのかいた from django import forms from django.forms import ModelForm from qa.models import * from qa.tools import confirm_str_lt_length, confirm_char_in_str, confirm_equal_str class SignupForm(ModelForm): password = forms.…

コールバックで帰ってくるってのがよくわかんなかった話

簡単なmixiアプリさえつくれない widget.xml <span id="message"></span> <script> opensocial.requestShareApp("VIEWER_FRIENDS", null, function(response) { var url = "http://hogehoge.com/"; var params = {}; params[gadgets.io.RequestParameters.METHOD] = gadgets.io.MethodType.POST;…

render_to_responseよりdirect_to_templateのほうが楽だよねって話

csrf_tokenが通らかなった なんかのコピペでつくってたけど{% csrf_token %}をいれても「csrf_tokenがないよ」ってエラーになったりする。 原因 render_to_responseで渡された辞書はそれしか評価しない。direct_to_templateだとcontext_processorsのもはいる…

Formとmodelでぐちゃぐちゃになった話

いつもよくわかんないけどモデルからつくってた models.py class User(models.Model): email = models.CharField(u'メールアドレス', max_length=200 ,blank=False) password = models.CharField(u'パスワード', max_length=64 ,blank=False) password2 = mo…

プルダウンメニューはCOICEISを使ったほうがいいよねっていう話

とりあえず よくわからないからこんなHTMLしてたんだ template.html <form method="POST" action="{% url show %}" name="show"> <select name='point'> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> <option value="6">6</option> </select></form>

なんかよくわかんないけどいろいろと反映されない問題

結論 セッションで扱っているものとデータベースで扱っているものが違うことで起こることがある。 以下蛇足 CONTEXT_PROCESSORSでセッション管理してなんちゃらしているのだけど、それと直接データベースで扱う場合とではなんか参照しているものが違うらしい…

なんかsession_userがうまく更新できなかったっていう話

マジ意味不明だし こういう状況だった context_processors.py ... ... def auth(request) return{ 'session_user': request.session.get('session_user') } models.py class User(models.Model) ... ... ans_count = models.IntegerField(default=0) views.p…

静的ファイルの{{MEDIA_URL}}がうまく反映されなかった話

バッドノウハウらしいがおれにはよくわからぬ。先人の道をコピペするのみ。 もともとこれを参考にしてた tokibito / python-hackathon4-django / commit / 1ed9b0fd4b5d — Bitbucket この場合はcssだけど画像ファイルを置く必要があったのでこれをパクろうと…

ManyToManyFieldでハマった

printして文字列が帰ってきているがそれはdef __unicode__(self):のせいだった class Tag(models.Model) tagname = models.CharField(u'タグ') def __unicode__(self): return self.tagname ... class Thread(models.Model) tags = models.ManyToManyField(T…