django

formをレンダリングしたときにinput要素を使わないようにする(django)

確認画面を作るときなどに使えるかも class XForm(forms.Form): item = forms.ChoiceField(choices=[(i, i) for i in xrange(3)]) data = forms.DateTimeField(required=False) class ReadOnlyWidget(forms.Widget): def render(self, name, value, attrs=No…

ModelFormのような内部のMetaを見るFormを自分で作る

ModelFormのように、内部のMetaを見るクラスを自分で作って見たいと思った。 概要 djangoでは、以下のようにMetaを使ってmetaclassに情報を渡して、Formクラスを作れる。 class ArticleForm(ModelForm): class Meta: model = Article また、以下のようにfiel…

djangoのテンプレートをdjangoアプリ以外のところでも使う。

ちょっとしたファイルの生成などに,テンプレート使いたい。 djangoの環境があったので、このテンプレートをdjangoの開発以外でも使えたら楽。重要なこと includeタグが使えること。 ちょっと調べたら使えたのでメモ。 以下のようなファイル構成 . ├── hello.…

djangoのモデルのfieldクラスの階層構造

from django.conf import settings if not settings.configured: settings.configure() import django.db.models as m class Parser(object): def __init__(self): self.D = {} def eat(self, klass): D = self.D for k in reversed(klass.mro()): if k not …

formsetのテスト面倒。

formsetの取る引数の形式が独特なのでそれに合わせてデータを作るのが面倒。 こんな感じの関数を作っておくとテストのとき楽かもしれない。 def formset_to_params(formset): r = {} mform = formset.management_form for k, bf in zip(mform.fields.keys(),…

formsetで外部から状態を注入したい場合。

こんな感じに書くと、何も考えずに使えて便利かもしれない。 from django.conf import settings settings.configure() import django.forms as forms from django.forms.formsets import BaseFormSet, formset_factory class ExtraArgsForm(forms.Form): def…

qobjectの作成用のモジュール書いてみた。

暑くてまじめに書く気が起きない。ごめんなさい。memo,memo https://bitbucket.org/podhmo/po-django-qutil/src 普通のqobject Q(foo="bar") & (boo=True) という感じに作成して、比較したい値が決めた状態で作ってしまう。ついでに,djangoのキーをつなげる…

Qobjectの比較

djangoのQobjectの比較する関数を書いた。Qobjectは順序不同になるので、比較がめんどうだった。 (他に楽に比較する方法があるのかもしれないけれど) 別にnoseの関数を使う必要はないけれど。 from django.conf import settings settings.configure() from…

__unicode__書くの面倒。

問題 djangoのモデルのデフォルトの表示がしょぼい オブジェクトの持つフィールドの値が分かんない。 __unicode__メソッドを自分で書く必要がある。 モデル毎に__unicode__を定義したくない。 面倒くさい デコレータとかでどうにかならない? でも、__unicod…

dumpdataでfixtureを出力する際にはIndentをつけられる。

python manage.py dumpdata --format=xml ぐちゃぐちゃ。 <django-objects version="1.0"><object pk="4" model="auth.permission"><field type="CharField" name="name">Can add group</field><field to="contenttypes.contenttype" name="content_type" rel="ManyToOneRel">2</field></object></django-objects>

inlne_template?

memo.ぐちゃぐちゃ。 python views.pyという感じで実行できる viewsとしても動く ぐちゃぐちゃ。

safeが必要ないオブジェクトを作る。

djangoのテンプレートの話。カスタムタグやフィルタ以外で、safeをつける必要がないオブジェクトを作りたい。 formのような。 {{form.as_p}}はできるけれど、自分で作った以下のようなオブジェクトはsafeをつける必要がある。 class A(str): def as_p(self):…

djangoでmodelの図を描いて見る。

django-extensionsにそんな機能が入っていた。 ubuntuで図を描いてみる例。 必要なもの graphviz django-extensions requirements.txt pygraphviz django-extensions install sudo aptitude install graphviz graphviz-dev pip install -r requirements.txt …

templateのデフォルト値を変える。

デフォルトは""なので分かりにくい。settings.pyに以下を追加すると、テンプレートで間違えた時の表示が変わる。 TEMPLATE_STRING_IF_INVALID = "THIS IS NOT EXIST"

views.pyにview関数をwrapするオブジェクトを作る

以下のようなurlを指定する必要があって面倒。 json/foo json/bar json/hoo .... 普通にurls.pyを書くと from django.conf.urls.defaults import patterns, include, url # Uncomment the next two lines to enable the admin: # from django.contrib import…

djangoをnginx+gunicornで動かす。テキトー。

install pip install gunicorn sudo aptitude install nginx cd /etc/nginx sudo mv nginx.conf nginx.conf.orig sudo vi nginx.conf nginx.confを以下のように ## worker=1, port=8000 user www-data; worker_processes 1; error_log /var/log/nginx/error.…

django-kyr-tag-mode.elを作成した。

詳しくはリンク先のコメント https://gist.github.com/903244#comments

admin画面の上の帯を変える。

結構手軽にできた。templates/admin/base_site.htmlをdjangoのcontrib/admin/templates/adminからコピー。 templateの有効なディレクトリに置く。 extrastyleの中にcssを書く。ちょこっと。 titleを変える。 @@ -1,10 +1,16 @@ {% extends "admin/base.html"…

admin画面のURLをいじってQuerySetの絞り込み

memoなので雑。(後で手直し) admin.pyで list_filter = ["count"] のものは http://example.com:8000/admin/anything?count__lt=10 http://example.com:8000/admin/anything?count__lte=10 http://example.com:8000/admin/anything?count=10 http://exampl…

htmlをtext形式で表示させる

androidの一部のブラウザなどは、表示しているhtmlのソースを見ることができないものがある。 そのような時にhtmlのソースを見るには、Context-Typeを指定してあげると良い。 code views.pyの一部 def response_as_text(request): response = direct_to_temp…

もっと手軽にdjangoのテンプレートを使いたい。

djangoのtemplateをもっと手軽に、具体的にはviewsとtemplate分けたりせずに使いたい。*1 要求 webAPIの動作確認をするために、いちいち、ファイル分けたくない。 もっと手軽に利用したい。 問題 ところがドキュメントの通りに書くとimport Errorを返してし…

毎回__unicode__とか定義するの面倒。2

本来のdjangoの機能を使って実装した方が見通しが良いと教えてもらった。 こんな感じに作れば良いらしい。 from django.db import models class InspectableModel(models.Model): def __unicode__(self): field_names = [field.get_attname() for field in s…

毎回モデルに__unicode__定義するのめんどい

クラスデコレータとかで何とかならないかな? def inspectable(klass): field_names = [field.get_attname() for field in klass._meta.fields] def _inspect(self): results = [] results.append('%s object' % self.__class__.__name__) for name in field…

djangoのサービスを外部に公開。

0.0.0.0:80とか知らなかった。 # localhost:80でサーバを立ち上げる python manage.py runserver # port指定 python manage.py runserver 9641 # 外部に公開 python manage.py runserver 0.0.0.0:5678 #portが空いていれば。