日付フォーマットヘルパー
django.utils.translation.get_date_formats() と django.utils.translation.get_partial_date_formats() はdeprecatedとしてマークされ、 django.utils.formats.get_format() を明示的に呼ぶようになりました。 USE_L10N が True に設定されている場合にはロケールに適し、Falseに設定されている場合にはデフォルトにフォールバックします。
日付フォーマットを取得するにはこうしていました
from django.utils.translation import get_date_formats
date_format, datetime_format, time_format = get_date_formats()
今後は、次のようにします
from django.utils import formats
date_format = formats.get_format('DATE_FORMAT')
datetime_format = formats.get_format('DATETIME_FORMAT')
time_format = formats.get_format('TIME_FORMAT')
あるいは、直にフォーマットします
from django.utils import formats
value_formatted = formats.date_format(value, 'DATETIME_FORMAT')
django.forms.fieldsのものも全体に提供されます。
DEFAULT_DATE_INPUT_FORMATS
DEFAULT_TIME_INPUT_FORMATS
DEFAULT_DATETIME_INPUT_FORMATS
明示的にフォーマットを取得するには django.utils.formats.get_format() を使ってください。
Feed(django.contrib.syndication.feeds)
django.contrib.syndication.feeds.Feedクラスはdjango.contrib.syndication.views.Feedクラスに置き換えました。feeds.Feedクラスはdeprecatedとしてマークされ、Django1.4でなくなります。
新しいクラスはほぼ同一のAPIを持っていますが、ビューとしてインスタンスを使うるようになりました。例えば、古いもののURLconfを見てみましょう。
from django.conf.urls.defaults import *
from myproject.feeds import LatestEntries, LatestEntriesByCategory
feeds = {
'latest': LatestEntries,
'categories': LatestEntriesByCategory,
}
urlpatterns = patterns('',
# ...
(r'^feeds/(?P<url>.*)/$', 'django.contrib.syndication.views.feed',
{'feed_dict': feeds}),
# ...
)
新しいFeedクラスはビューとして直に配置できます。
from django.conf.urls.defaults import *
from myproject.feeds import LatestEntries, LatestEntriesByCategory
urlpatterns = patterns('',
# ...
(r'^feeds/latest/$', LatestEntries()),
(r'^feeds/categories/(?P<category_id>\d+)/$', LatestEntriesByCategory()),
# ...
)
今feed()ビューを使っているのであれば LatestEntries クラスは変更擦る必要はないでしょう(新しいFeedクラスのサブクラスにする以外は)。
例外としては、feedの説明とタイトルに使うテンプレートをDjangoが自動で導き出している場合です(title_templateとdescription_templateを指定していない場合です)。
title_templateとdescription_template属性を指定するか、item_title()とitem_description()メソッドを定義するかしなければいけません。
LatestEntriesByCategoryは特定のカテゴリを表示するためにbitsという引数をとるget_object()メソッドを使います。新しいFeedクラスはget_object()メソッドにrequestとURLからキャプチャした引数をとります。
from django.contrib.syndication.views import Feed
from django.shortcuts import get_object_or_404
from myproject.models import Category
class LatestEntriesByCategory(Feed):
def get_object(self, request, category_id):
return get_object_or_404(Category, id=category_id)
# ...
加えてFeedクラスのget_feed()メソッドは違う引数をとるようになりました。Feedクラスを直に使っている場合には影響があるでしょう。
オプションでurl引数を取っていたのが、別の二つの引数をとるようにかわりました。Feedクラスのget_object()メソッドの戻り値と、requestです。
Feedクラスは毎回初期化されることはないので、デフォルトでは__init__()メソッドは引数をとらないようになりました。以前はURLからキャプチャしたslugとrequestを取っていました。
RSS best practices にあわせて、RSSフィードは atom:link エレメントを挿入しないようにしました。テストを修正しなければいけないかもしれません。
より詳細には syndication framework documentation を参照してください。