結局のところ、これは非常に簡単に行われます。
私はすぐに、車輪を再発明せず、利用可能なライブラリの1つを使用してTwitterで作業することにしました。 トワイソンが私を一番見ました。 models.pyにインポートします:
Copy Source | Copy HTML import twython.core as twython
これは、簡略化された公開モデルです。 最小限のフィールドのみを残しました:
Copy Source | Copy HTML
- クラス Post (models.Model):
- title = models.CharField(max_length = 100 )
- media = models.TextField()
- published = models.BooleanField(デフォルト= False)
- tweeted = models.BooleanField(デフォルト= False、編集可能= False)
- def __unicode__ (self):
- return u '%s' % self .title
- @ models.permalink
- def get_absolute_url (self):
- return ( 'news.views.news_view' 、[ str ( self .id)])
モデルには2つのフィールドがあります-下書きを「ツイート」しないように公開され、各投稿が1回だけアナウンスされるようにツイートされます。
次に、アナウンスを送信するプロセス:
Copy Source | Copy HTML
- def post_to_twitter (送信者、インスタンス、** kwargs):
- "" " <br/> 投稿が公開されたがまだ閉じられていない場合、Twiでお知らせを送信してい ます。
- instance.tweeted ではなく instance.publishedの場合:
- 試してください :
- twitter = twython.setup(ユーザー名= "TWITTER_USER" 、パスワード= "TWITTER_PASSWORD" )
- long_url = "http://%s%s" %(Site.objects.get_current()、instance.get_absolute_url())
- short_url = twitter.shortenURL(long_url)
- twi_message = instance.title + "" + short_url
- 試してください :
- twitter.updateStatus(twi_message)
- ポストオブジェクト。 フィルター (pk = instance.pk).update(ツイート済み= True)
- TwythonError を除く :
- 合格する
- AuthError を除く :
- 合格する
Twitterに送信するプロセスは、post_saveイベントで停止するのが論理的です。
post_save.connect(post_to_twitter, sender=Post)
以上です。 あらゆる種類の有用性を好みに追加できますが、この形式でも非常にうまく機能します。