【Django】feed(RSS/Atom)の生成後「ブログ村」「ブログランキング」でPing代理送信ができない場合の対応

カテゴリ:Django 投稿:2022年7月3日0:01、更新:2022年7月7日1:06

・記事の概要 

自作しているブログでfeed生成まではできたが、「ブログ村」「ブログランキング」でPing代理送信時にエラーや記事取得ができない場合の対応を記載します。

Djangoで構築したサイトでない場合も内容は参考にして頂けるかと思います。


・この記事の対象 

ブログ村ブログランキング」でPing代理送信をしても記事取得ができない方。

また既にfeedの生成自体は対応ができている方。

※注釈

feedの生成自体は既にわかりやすいサイトがありますので「Django feed」などで検索して対応してもらえればと思います。当記事はその上でも詰まるポイントが解説されたサイトがなかったため、作成しています。


・「ブログ村」での対応必要ポイント 

feedを用意する以外にも留意するべき点としては以下3点です。


・pubdateの追加 

配信用のxmlにpubdate(投稿日時)がない場合は必要になります。

feed配信用のクラスに以下のように追記してください。

#クラス名は任意なので既にあるもののままでいい
class PostFeed(Feed):
    title = "hogehoge"
    #中略
    ...
    def items(self):
        return Post.objects.all()
    #中略
    ...
    #ここが追記部分、created_at部分は投稿日に該当するカラムを設定
    def item_pubdate(self, item):
        return item.created_at.astimezone(timezone('Asia/Tokyo'))


・aタグでのページ上での表示 

webサイト上のどこかにaタグでフィードURL(ガワはアイコン表示でも可能)を表示しておきましょう。


・RSS2.0の対応ができていればAtomの配信は必要なし 

feedのxml内以下の表示がされていれば問題ないです。またAtom配信の対応をしていても影響はないです。

rss version="2.0"


・「ブログランキング」での対応必要ポイント 

上記の「pubdate」の追加の他に追加で必要な対応が1点あります。


・headタグ内にlinkタグでのフィードURL記載が必要 

上記のブログ村対応だとaタグ表示でしたが、こちらはlinkタグでの埋め込みが必要です。

「フィードのURL」部分は実際のURLが入ればOKです。

<link rel="alternate" href="フィードのURL" type="application/rss+xml" title="RSS" />


・まとめ 

いかがだったでしょうか。

基本的に上記の対応を頂ければそもそものfeed配信の方法でミスをしていない限り問題ないかと思います。

またfeedのxmlを実際に参照してみてもミスはなさそうで、かつ上記の対応もした上でも代理送信ができない場合は各サイトより問い合わせをしてみてください。

もしも皆様の参考になれば幸いです!


コメント一覧

コメント投稿ページへ


書いている人

のぎ
PG->SE->PMとして働き、現在はIT企業で新卒採用の担当をしています。長期育休取得明けで0歳娘の対応に毎日バタバタです。笑
採用業務をしつつ社内利用ツールなど作成しており、当ブログも勉強の一環でコーディングして作成しています。 エンジニア領域、人事・採用領域、育児関連など発信していきます。