All articles, tagged with “django”

[Django Memo]モデルのシンタックスをチェックする

The Django Book, Chapter 5: Interacting with a Database: Models, Installing the Modelより。

models.pyのシンタックスとロジックは、以下のコマンドで事前にチェックできる。

$ python manage.py validate

すべて問題なければ

0 errors found

が表示されるはず。モデルに問題がなければテーブルを作成する。

以下のコマンドにてアプリを指定してCREATE TABLESQL文を確認することができる。

$ python manage.py sqlall appname

実際にテーブルを作成するにはsyncdbを実行する。

$ python manage.py syncdb

名前に反してsyncdbは、モデルの更新・削除を反映してはくれない。

XREAでByteflow! インストール本編

肝心なByteflowインストール本編が遅くなってしまいました。これ以上放置すると忘れそうなのでさっさとアップしておきます。

モジュールインストール

まず、必須モジュールをインストールします。バージョンは私がインストールしたときの最新バージョンになります。リンクのURLもしくはリポジトリからダウンロードして標準インストールを行います。例によって、~/djangoが私の作業場所です。

python-openid 2.2.1

yourname@server ~/django $ tar -zxvf python-openid-2.2.1.tar.gz
yourname@server ~/django $ cd python-openid-2.2.1
yourname@server ~/django/python-openid-2.2.1 $ python setup.py install

ちなみに —record=install.logでインストールログをファイルに残せます。

Beautiful Soup 3.0.7a

yourname@server ~/django $ tar -zxvf BeautifulSoup.tar.gz
yourname@server ~/django $ cd BeautifulSoup-3.0.7a
yourname@server ~/django/BeautifulSoup-3.0.7a $ python setup.py install

ElementTree 1.3 alpha 3

yourname@server ~/django $ svn co http://svn.effbot.org/public/elementtree-1.3/
yourname@server ~/django $ cd elementtree-1.3
yourname@server ~/django/elementtree-1.3 $ python setup.py install

Python Imaging Library 1.1.6 Source Kit

yourname@server ~/django $ tar -zxvf Imaging-1.1.6.tar.gz
yourname@server ~/django $ cd Imaging-1.1.6
yourname@server ~/django/Imaging-1.1.6 $ python setup.py install

そして、もちろんByteflowのソースをインストールします。Mercurialのリポジトリからダウンロードしましょう。MercurialをインストールについてはXREAでByteflow! mercurialインストール編を参照して下さい。

yourname@server ~/django/projects $ hg clone http://hg.piranha.org.ua/byteflow/

django.cgiの修正

以下、Byteflowの環境に合わせ適宜修正します。

1行目: ユーザホーム下のPythonを指定します。(Djangoインストール時に設定済みです。)

#!/virtual/yourname/bin/python

32行目: Djangoがsys.path上にない場合は適宜指定を追加します。(いまのところ設定していないが問題ないと思う。いや問題はあるが後述。)

95行目: プロジェクトのパスを指定します。Byteflowの場合、プロジェクトディレクトリまで含める必要がありました。ただプロジェクトディレクトリの上位ディレクトリもpathを通しておかないとエラーがでてました(うる覚え)。で結局2つとも通しておきます。

sys.path.append("/virtual/yourname/django/projects")
sys.path.append("/virtual/yourname/django/projects/byteflow")

97行目: settingsモジュールを指定します。Byteflowの場合、プロジェクトのドット修飾をはずす必要がありました。

os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'

adminメディアファイルの配置

settings.pyのADMIN_MEDIA_PREFIXに合わせて、adminメディアファイルディレクトリのシンボリックリンクを貼ります。

$ ln -s ~/lib/python2.4/site-packages/django/contrib/admin/media ~/public_html/yourname/admin-media

settings_local.pyの編集

settings_local.py.templateファイルをコピーしてsettings_local.pyをつくり、自分の環境に合わせ設定を編集します。DATABASE関係はマストです。

それからsettings.pyにある以下の設定を編集する必要があります。自分は直接編集してしまいましたがsettings_local.pyに追記すれば上書きされるはずです。

TIME_ZONE = 'Asia/Tokyo'
LANGUAGE_CODE = 'ja-jp'

設定がおわったら、syncdbを行い準備完了です。

yourname@server ~/django/projects/byteflow $ python manage.py syncdb

このように一応ブログは表示されてますが、問題山積です。まだまだ使いこなしていませんが、いまのところ

  • openid使えません。
  • pingbackできません。

まあ気長にやっていこうと思います。

[Python Memo]インタプリタで出力文字列を改行通りに表示させる

The Django Book, Chapter 4: The Django Template System, Rendering a Templateより。

インタプリタで出力文字列を実際の改行通りに表示させるには、単にprint文に出力させるようにすればよい。
 e.g.,

print t.render(c)

※tはTemplateオプジェクト。

[Django Memo]インタプリタでDjangoを使う

The Django Book, Chapter 4: The Django Template System, Django Settingsより。

サーバーに配置したり、テストサーバーで使用しているときには意識していないが、インタプリタでDjangoを使用するときには、どのsettingsを使用するかを明示的に教えてやる必要がある。といってもコマンドを打ち込んだりするのではなく、以下のように任意のプロジェクトからシェルを起動してやればよい。

python manage.py shell

[Django Memo]強制的にエラーページを表示させる

The Django Book, Chapter 3: The Basics of Dynamic Web Pages, Django’s Pretty Error Pagesより。

デバッグモード時(DEBUG = True、通常settings.pyで定義する。defaultはFalseだが、TEMPLATE_DEBUGなどから往々にして間接参照されているので明示的に定義すべき。)に、Viewプログラムの任意の場所に以下の一文を加えることによりエラーページを強制的に表示させ、ローカル変数やプログラム状態を確認することができる。

    assert False