サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
災害への備え
djangoproject.jp
1年あまりの開発期間の末、本日 Django1.7 が正式にリリースされました。 いつものように リリースノート に 1.7 でカバーされている全てが詳細に書かれています。 メジャーなもののハイライトは以下: ビルドインのマイグレーションシステム 。 South からのアップグレード も可能です Django のアプリケーションシステムのリファクタリング 。Django のアプリケーションが models ファイルに依存しなくなり、コンフィグと Django 起動時のコード実行を指定できます。 マイグレーションに対応するためにモデルフィールド (Field) の API を改善。 将来的に複合キーを簡単に追加できるようにもする予定です。 カスタムマネージャーとクエリセットクラスの改善。逆方向へのリレーションの探索からManagerを使えるようになり、カスタムの QuerySet クラスから
先日 Django 1.6 が正式にリリースされました。 ダウンロードページ リリースノート では新機能の詳細すべてが網羅されています。 ここではハイライトをいくつか紹介します: Django 1.6 ではデフォルトのプロジェクト/アプリケーションテンプレート が簡略化されました。さらに クリックジャッキング対策 と admin インタフェースがデフォルトで有効になっています。 Django 1.6 から トランザクションの扱い が改修され、 データベースレベルでの自動コミットもデフォルトで有効に変更されました。 この改修には Django 1.5 と非互換な点があります。 1.5 スタイルのトランザクションハンドリングからの移行 を参照してください。 Django 1.6 は データーベースへの持続的接続 をサポート しています。ただしこれはコネクションプーリングとは違います。 同じワー
数多の功業の末、 Django 1.5 リリースを発表できることを誇りに思います。 いつものように、 リリースノート には、このリリースの良い点すべてが詳細に書かれています。 しかしこれはあまりに文量が多いので、ここではいくつかのハイライトを見ていきましょう: Django 1.5 では User モデルの設定ができるようになりました 。 基本になる Django の User モデルは、もちろん依然としてありますが、 1.5 からはその ファーストクラスがサポートされました。これによって開発者自身がモデルを定義し、 Django の認証システム (auth) で利用できます。 Django 1.5 は Python 3 に初めて対応したリリースです(具体的には Python 3.2 以降です)。 Python 3 対応はまだ実験段階 (experimental) として考えられています。
このドキュメントの Django のバージョンにはセキュリティ上の脆弱性があるため、すでにサポートが終了されています。新しいバージョンにアップグレードしてください!最新の Django のバージョンのドキュメントはこちら
from django.core.mail import send_mail send_mail('Subject here', 'Here is the message.', 'from@example.com', ['to@example.com'], fail_silently=False) send_mail()¶ 電子メールを送信する最も簡単な方法は django.core.mail.send_mail() 関数です。この関数の定義は以下の通りです: send_mail(subject, message, from_email, recipient_list, fail_silently=False, auth_user=None, auth_password=None)¶ subject, message, from_email および recipient_list は必須の
ビューの設計哲学¶ ビューとは、 Django のアプリケーションにおいて特定の機能を提供するウェブペー ジの「型 (type)」であり、独自のテンプレートを持っています。例えばブログアプ リケーションなら、以下のようなビューがあるでしょう: Blog ホームページ – 最新のエントリをいくつか表示します。 エントリの「詳細」ページ – 一つのエントリへの恒久リンク (permalink) ページです。 年ごとのアーカイブページ – エントリのある年を表示します。 月ごとのアーカイブページ – ある年のエントリのある月を表示します。 日ごとのアーカイブページ – ある月のエントリのある日を表示します。 コメント投稿 – あるエントリに対するコメントの投稿を受け付けます。 Poll アプリケーションの場合には、以下の 4 つのビューを作成します: Poll の「アーカイブ」ページ – 最新の
ミドルウェア (Middleware) とは、 Django のリクエスト/レスポンス処理をフック するためのフレームワークです。ミドルウェアは軽量かつ低水準な「プラグイン」 システムで、Django の入出力を操作します。 各ミドルウェアコンポーネントはそれぞれ特定の機能を担っています。例えば、 Django には XViewMiddleware ミドルウェアコンポーネントがありますが、こ れは全ての HEAD リクエストに対して "X-View" HTTP ヘッダを追加します。 このドキュメントでは、 Django についてくる全てのミドルウェアコンポーネント の使用法と、自分で新たにミドルウェアを作る方法を説明します。 Django には、すぐに使える組み込みのミドルウェアが付属しています。 組み込みミドルウェアガイド を参照してください。 ミドルウェアの有効化¶ ミドルウェアコンポ
自作のモデルメソッドやモジュールレベルのメソッドでは、自由にカスタムの SQL 文を書けます。 django.db.connection というオブジェクトが現在のデータベー ス接続を表現しています。カスタムSQL を使うには、まず connection.cursor() を呼び出してカーソルオブジェクトを取得し、次いで cursor.execute(sql, [params]) を呼び出して SQL を実行した後、 cursor.fetchone() や cursor.fetchall() を読んで結果行を返します。例 えば: def my_custom_sql(self): from django.db import connection cursor = connection.cursor() cursor.execute("SELECT foo FROM bar WHERE baz
CsrfMiddleware クラスは、簡単に使える クロスサイトリクエストフォージェリ 対策を提供しています。このタイプの攻撃は、悪意あるウェブサイトが、あなたの ウェブサイトに対して、ログイン済みユーザの権限で何らかの操作を行うように作 られたリンクやフォームボタンを自分のサイトに設置しておき、ログイン済みのユー ザがユーザが自分のブラウザを使ってボタンやリンクをクリックするように仕向け ることで起こります。 CSRF 攻撃に対する第一の防御は、 GET リクエストから副作用を取り除くというも のです。 POST リクエストに対する防御は、このミドルウェアをインストール済み ミドルウェアリストに追加して実現できます。 使い方¶ 'django.contrib.csrf.middleware.CsrfMiddleware' ミドルウェアを MIDDLEWARE_CLASSES に追加して
class Field(**kwargs)¶ フォームクラスの作成で一番重要なのは、フォームの各フィールドの定義です。各 フィールドには固有のデータ検証ロジックと、いくつかのフックが備わっています。 Field.clean(value)¶ フィールドクラスの主な用途はフォームクラスにおけるフィールド定義ですが、フィー ルドクラスは直接インスタンス化して使えるので、フィールドの動作を理解する役 に立つはずです。各フィールドインスタンスは clean() メソッドを備えており、 単一の引数を取って検証を行い、その結果に応じて django.newforms.ValidationError を送出するか、クリーニング済みの値を返 します: >>> f = forms.EmailField() >>> f.clean('foo@example.com') u'foo@example.com' >>
はじめに¶ Django テンプレートシステムには、広範な 組み込みタグとフィルタ が付属していて、アプリケーションのプレゼンテーショ ンロジックに纏わる問題を解決できます。とはいえ、コアのテンプレートタグ プリミティブだけでは、要求を満たせない場合もあります。そういう場合のために、 テンプレートエンジンを拡張できます。Python で自作のタグやフィルタを書き、 テンプレート上で {% load %} タグを使って使えるのです。 コードの配置¶ カスタムのテンプレートタグやフィルタは Django のアプリケーション内に置きま す。既存のアプリケーションに関連があるのなら、そのアプリケーションにバンド ルすればよいでしょう。そうでなければ、コードを入れておくための新たなアプリ ケーションを作成します。 アプリケーション内には、 templatetags ディレクトリを置かねばなりません。
Django では匿名セッション (anonymous session) を完全にサポートしています。 セッションフレームワークを使うと、任意のデータをサイト訪問者単位 (per-site-visitor) で保存したり取得したりできます。セッションフレームワーク はサーバ側にデータを保存し、クッキーの送受信操作を抽象化します。クッキーに はセッション ID だけが保存され、データ自体は送受信されません。 セッションを有効にする¶ セッション機能は ミドルウェア として実装されていま す。 セッションを有効にするには、以下の作業が必要です: セッション機能をオンオフするには MIDDLEWARE_CLASSES 設定を編集します。 MIDDLEWARE_CLASSES を編集して、 'django.contrib.sessions.middleware.SessionMiddleware'
なぜこんなプロジェクトがあるのですか?¶ Django は極めて実践的な要請のもとで成長してきました。 Web 新聞を発行している WorldOnline では、効果的な Web アプリケーションを、ジャーナリズムとして成立 する締め切りに間に合うように構築せねばなりません。変転の激しいニュースルー ムにおいて、 WorldOnline は複雑な Web アプリケーションをコンセプトから立ち 上げ公開にもっていくまでの時間を唯一の課題としているのです。 同時に、 WorldOnline の Web 開発者たちは、こと Web 開発の王道に関しては一貫 して完璧主義者です。 こうした理由から Django は Web アプリケーションをただ素早く作れるだけではな く、Web 開発の 王道 に従って作成できるように設計されているのです。 2003 年、WorldOnline の開発者 (Adr
Python のインストール¶ Django は Python の Web フレームワークなので Python が必要です。 Django はバージョン 2.3 以上の Python で動作します。 http://www.python.org から Python を取ってきましょう。 Linux や Mac OSX を 動かしているのなら、おそらくインストール済みのはずです。 Apache と mod_python のインストール¶ 単に Django を試してみたいだけなら、この節は読み飛ばして次の節を読んでくだ さい。Djangoにはテスト用の軽量なWebサーバが付属しているので、運用環境での動 作が必要になるまでApacheをセットアップする必要はないのです。 Django を実運用のサイトで使いたい場合、 Apache と mod_python を使って下 さい。 mod_pyth
from django import forms class UploadFileForm(forms.Form): title = forms.CharField(max_length=50) file = forms.FileField() このフォームからの入力を扱うビューは、ファイルデータを request.FILES で 受け取ります。 request.FILES はファイルデータの入った辞書で、辞書のキー はフォームクラス中の FileField (または ImageField や FileField のサブクラス) の名前です。従って、上の例では、 request.FILES['file'] で ファイルデータにアクセスできます。 ほとんどの場合は、「 アップロードされたファイルをフォームに結びつける 」の節で説明した方法に従っ て、 request からデータを取り出してフ
Django 自体では、画像やスタイルシート、ビデオといった静的な (メディア) ファ イルを提供しません。通常、 Django はメディアファイルの提供を使っている Web サーバの仕事として残しておきます。なぜなら、 Apache や lighttpd のような 標準的な Web サーバは Web アプリケーションフレームワークよりもはるかに高 性能な静的ファイル提供機能を備えているからです。 というわけで、 Django が静的ファイルをサポートするのは 開発中だけ です。 メディアファイルの提供には django.views.static.serve() ビューを使って 下さい。
このドキュメントでは、 Django のビューを使って動的に PDF ファイルを生成する 方法について説明します。 PDF の生成は、優れたオープンソースの Python 用 PDF ライブラリである ReportLab を使うことで可能になります。 動的な PDF ファイル生成の利点は、様々な目的向けにカスタマイズされた PDF 、 例えばユーザごとに違ったコンテンツの入った PDF を生成できることにあります。 例えば、 kusports.com では、March Madness contest の参加者向けに、 Django を使ってカスタマイズ可能な印刷むきの NCAA トーナメント試合表を PDF で生成し ていました。 ReportLab のインストール¶ ReportLab ライブラリは http://www.reportlab.org/downloads.html からダウ
null¶ Field.null¶ True にすると、 Django は空の値を NULL としてデータベースに入れます。 デフォルト値は False です。 空の文字列値は NULL ではなく空文字列として保存されることに注意して下さ い。 null=True が使えるのは、整数型やブール型、日付のような、文字列では ないフィールド型の場合だけです。 null はデータベースでの記録 操作にのみかかわるパラメタなので、フォーム上で空の値を入力できるようにした ければ blank=True も指定する必要があるでしょう (blank も 参照してください)。 特別な理由のない限り、 CharField や TextField のような、 文字列ベースのフィールドには null を指定しないでください。 文字列ベースのフィールドが nill=True であるということは、「データがない」
このドキュメントについて このドキュメントでは、 Django のフォーム処理機能を紹介しています。 フォーム API の詳細は、 フォーム API を参照してください。 利用できるフィールドタイプのドキュメントは フォームフィールド を参照してください。 django.forms は、 Django のフォーム処理ライブラリです。 フォームによって提出 (submit) されたデータの処理は、Django の HttpRequest クラスだけでも実現できます。しかし、フォー ムライブラリを使うと、フォーム処理に必要な共通のタスクの面倒を見てくれます。 フォームライブラリを使えば、以下のようなことを実現できます: フォームウィジェットから、 HTML フォームを自動的に生成して表示できま す。 提出されたデータに対して、バリデーション規則 (validation rule) を適 用でき
Django は、ページ分割された (paginated) データを扱うためのペジネータ (paginator) クラスを提供しています。ページ分割とは、データが複数のページに わたって表示され、それぞれのページに「前へ/次へ」といったリンクがある状態 を指します。ペジネータのクラスは、 django/core/paginator.py モジュー ルで定義されています。 >>> from django.core.paginator import Paginator >>> objects = ['john', 'paul', 'george', 'ringo'] >>> p = Paginator(objects, 2) >>> p.count 4 >>> p.num_pages 2 >>> p.page_range [1, 2] >>> page1 = p.page(1) >>> pag
ModelForm¶ データベース駆動のアプリケーションを構築しているのなら、 Django のモデルに 対応したフォームが必要な場合があるでしょう。例えば、 BlogComment モデル を作っていて、読者がコメントを入力できるようなフォームを作成したいような場 合です。こうしたケースでは、すでにモデルにフィールドを定義しているので、新 たにフォームクラス用にフィールドを定義するのは無駄な作業でしかありません。 この理由から、 Django はモデルからフォームクラスを生成するためのヘルパクラ スを提供しています。 以下に例を示します: >>> from django.forms import ModelForm # フォームクラスを生成 >>> class ArticleForm(ModelForm): ... class Meta: ... model = Article # 記事
キャッシュミドルウェア¶ class django.middleware.cache.UpdateCacheMiddleware¶ class django.middleware.cache.FetchFromCacheMiddleware¶ サイト全体にわたるキャッシュを有効にします。キャッシュを有効にすると、 Django の管理下にあるページは CACHE_MIDDLEWARE_SECONDS 設定に定 義した時間のキャッシュされます。 キャッシュのドキュメント を参照してください。 コモンミドルウェア¶ class django.middleware.common.CommonMiddleware¶ リクエスト処理に完全主義者むけの便宜機能を追加するミドルウェアです: DISALLOWED_USER_AGENTS に設定されたユーザエージェントから のアクセスを禁止します。 DIS
from django.http import HttpResponse import datetime def current_datetime(request): now = datetime.datetime.now() html = "<html><body>It is now %s.</body></html>" % now return HttpResponse(html) Let's step through this code one line at a time: まず、 django.http モジュールから HttpResponse クラスを import しています。 Python の datetime ライブラリもロードしておき ます。 次に、 current_datetime という関数を定義しています。これがビュー 関数です。ビュー関数は第一引数に HttpR
提出されたフォームデータのデコードに使われる、現在のエンコーディングを 表す文字列です (None の場合もありますが、この場合は DEFAULT_CHARSET を使います)。この属性を変更すれば、フォーム データにアクセスする際に使われるエンコーディングを指定できます。一度エ ンコーディングを変更すると、変更後に (GET や POST の) 属性への アクセスはすべて新しい encoding の値に従って行われます。フォームデー タが DEFAULT_CHARSET 以外の特定のエンコーディングと分かって いる場合に便利です。 HttpRequest.GET¶ 全ての HTTP GET パラメタが入った辞書ライクなオブジェクトです。後述の QueryDict も参照してください。 HttpRequest.POST¶ 全ての HTTP POST パラメタが入った辞書ライクなオブジェクト
django-admin.py は Django の管理タスクを行うためのコマンドライン ユーティリティです。このドキュメントでは django-admin.py の全ての 機能について説明します。 また、各 Django プロジェクトには manage.py が自動的に生成されます。 manage.py は django-admin.py に対する薄いラッパで、 django-admin.py に仕事を引き渡す前に以下の二つの処理を行います: プロジェクトのパッケージを sys.path に追加します。 DJANGO_SETTINGS_MODULE 環境変数がプロジェクトの settings.py を指すように設定します。 Django を setup.py ユーティリティでインストールしていれば、 django-admin.py スクリプトはシステムパス上にあるはずです。システム パス
モデルとは、サイトを構成するデータの、ただ一つかつ最終的なデータソースを指 します。モデルには、保存したいデータに不可欠なデータフィールドと、その振舞 いが収められています。一般的に、各モデルは単一のデータベーステーブルに対応 づけられています。 基本として、まず以下のことを知っておきましょう: 各モデルは Python のクラスで、 django.db.models.Model のサブ クラスです。 モデルの各属性値は、データベース上のあるフィールドを表現します。 これらの情報をもとに、 Django はデータベース API を自動生成します。 API の詳細は クエリを生成する で解説します。 See also このドキュメントを理解する上で、 モデル例の公式リポジトリ が参考になるでしょう。 (Django のソース配布物中では、これらの例は tests/modeltests ディレ
データモデル を作成したら、次はデータベースからデー タを取り出す必要があります。このドキュメントでは、モデルから利用できるデー タベース抽象化 API と、オブジェクトを生成、取得、更新する方法について説明し ます。モデルの照合オプションの詳細は データモデルリファレンス を参照してください。 このリファレンスでは、以下のような Poll アプリケーションを参考に話を進めま す: class Blog(models.Model): name = models.CharField(max_length=100) tagline = models.TextField() def __unicode__(self): return self.name class Author(models.Model): name = models.CharField(max_length=50) email
次のページ
このページを最初にブックマークしてみませんか?
『Home | djangoproject.jp』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く