View All Posts. MiCHiLU.com powered by Django ;-)

[Django]: Django和訳ドキュメント sync to r6000

Django オンラインドキュメント和訳 更新。 Revision 5922:6000 (2007/08/25). 「add-ons naturalday」「newforms form_for_instance」「テンプレートタグ url, urlize, urlizetrunc」についての記述が更新されています。

以下、 主な変更です。

naturalday

開発バージョンの Django で新たに登場した機能です

日付が今日、明日、昨日のいずれかに該当する場合、それぞれ「今日 ("today")」、 「明日 ("tomorrow") 」、「昨日 ("yesterday")」を返します。それ以外の日付の 場合は、引数に渡したフォーマット文字列を使って日付をレンダします。

引数: now と同じ日付フォーマット形式

今日が 2007 年 2 月 17 日とすると、以下のように日付を表示します:

  • 16 Feb 2007昨日 に変わります。
  • 17 Feb 2007今日 に変わります。
  • 18 Feb 2007明日 に変わります。
  • 引数を与えない場合、今日、昨日、明日以外の日付は DATE_FORMAT 設定 に従ってフォーマットされます。

form_for_model()

前に解説した「 コンタクトフォーム 」のビューを少し書き直してみましょう。 以下のような Message モデルを使って、コンタクトフォームへの入力内容を保 存しているとしましょう

class Message(models.Model):
    subject = models.CharField(max_length=100)
    message = models.TextField()
    sender = models.EmailField()
    cc_myself = models.BooleanField()

form_for_model() を使えば、このモデルからフォームを作成できます。 また、 form_for_instance() を使えば、 Message インスタンスを編集す るためのフォームも生成できます。前の コンタクトフォーム ビューをちょっと 変えて、 Messageid 値を引数に取るようにして、保存されている Message を編集できるようなフォームを作成してみます

def contact_edit(request, msg_id):
    # メッセージ id を使ってフォームを生成します。
    message = get_object_or_404(Message, id=msg_id)
    ContactForm = form_for_instance(message)

    if request.method == 'POST':
        form = ContactForm(request.POST)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect('/url/on_success/')
    else:
        form = ContactForm()
    return render_to_response('contact.html', {'form': form})

このビューのポイントは、 ContactForm クラスの生成方法と、リクエストメソッ ドが POST でない場合のブロックでは、 message インスタンスの値がフォー ムフィールドの初期値に使われるということです。

url

開発バージョンで新たに登場した機能です: 名前つき URL パターン を使っている場合、 url タグにはビューのパス名 の代わりにパターン名を指定できます。

urlize

平文で書かれた URL をクリック可能なリンクに変換します。

HTML マークアップの入ったテキストに urlize を適用すると、予想通りの出力 を得られない場合があるので注意してください。このフィルタは 素の テキスト に対してだけ使ってください。

urlizetrunc

URL をクリック可能なリンクに変換します。このとき、指定の文字数以上の URL を 切り詰めます。

urlize と同様、このフィルタは 素の テキストに対してだけ使ってください。

Mon, 27 Aug 2007 12:38:50 +0900 source edit
Creative Commons License
This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 2.1 Japan License.
View All Posts. MiCHiLU.com powered by Django ;-)