Django オンラインドキュメント和訳 更新。 Revision 5922:6000 (2007/08/25). 「add-ons naturalday」「newforms form_for_instance」「テンプレートタグ url, urlize, urlizetrunc」についての記述が更新されています。
以下、 主な変更です。
開発バージョンの Django で新たに登場した機能です
日付が今日、明日、昨日のいずれかに該当する場合、それぞれ「今日 ("today")」、 「明日 ("tomorrow") 」、「昨日 ("yesterday")」を返します。それ以外の日付の 場合は、引数に渡したフォーマット文字列を使って日付をレンダします。
引数: now と同じ日付フォーマット形式
今日が 2007 年 2 月 17 日とすると、以下のように日付を表示します:
- 16 Feb 2007 は 昨日 に変わります。
- 17 Feb 2007 は 今日 に変わります。
- 18 Feb 2007 は 明日 に変わります。
- 引数を与えない場合、今日、昨日、明日以外の日付は DATE_FORMAT 設定 に従ってフォーマットされます。
前に解説した「 コンタクトフォーム 」のビューを少し書き直してみましょう。 以下のような 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 インスタンスを編集す るためのフォームも生成できます。前の コンタクトフォーム ビューをちょっと 変えて、 Message の id 値を引数に取るようにして、保存されている 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 をクリック可能なリンクに変換します。
HTML マークアップの入ったテキストに urlize を適用すると、予想通りの出力 を得られない場合があるので注意してください。このフィルタは 素の テキスト に対してだけ使ってください。
URL をクリック可能なリンクに変換します。このとき、指定の文字数以上の URL を 切り詰めます。
urlize と同様、このフィルタは 素の テキストに対してだけ使ってください。
