Skip to main content

一个 django 模板标签,用于显示用户最近的推文。

项目描述

https://secure.travis-ci.org/coagulant/django-twitter-tag.png?branch=dev https://coveralls.io/repos/coagulant/django-twitter-tag/badge.png?branch=dev

一个 django 模板标签,用于显示用户最近的推文/搜索结果。1.0 版使用 Twitter API 1.1。

基本功能是限制显示的推文数量,过滤掉回复和转发。库在模板中公开每个推文json,添加额外的属性:htmldatetime。第一个使 url、hashtags 或 twitter 用户名可点击,就像你期望的那样。最后一个提供 python 日期时间对象以简化模板中的输出。网址默认展开。库优雅地处理 twitter 异常,返回最后一个成功的响应。

用法

  • 在您的模板中加载标签,如下所示:

    {% load twitter_tag %}
  • 获取用户(例如futurecolors)最近的推文并将它们存储在tweets变量中:

    {% get_tweets for "futurecolors" as tweets %}
  • 现在,您的模板上下文中有一个推文列表,您可以像这样对其进行迭代:

    <ul>
    {% for tweet in tweets %}
        <li>{{ tweet.html|safe }}</li>
    {% endfor %}
    </ul>

安装

此应用程序适用于 python 2.7 和 3.3、Django 1.4-1.6。

推荐的安装方式是pip:

pip install django-twitter-tag

在 settings.py 中将twitter_tag添加到INSTALLED_APPS :

INSTALLED_APPS = (...
                  'twitter_tag',
                  ...
                 )

配置

Twitter API 1.1要求对您发出的每个请求进行身份验证,因此您必须提供一些凭据才能使 oauth dance 工作。首先,创建一个应用程序,其次,在新创建的应用程序页面上请求访问令牌。获取令牌的过程在文档中有详细说明。

以下是您的配置可能如下所示的示例:

# settings.py
# Make sure to replace with your own values, theses are just made up

# Your access token: Access token
TWITTER_OAUTH_TOKEN = '91570701-BQMM5Ix9AJUC5JtM5Ix9DtwNAiaaYIYGN2CyPgduPVZKSX'
# Your access token: Access token secret
TWITTER_OAUTH_SECRET = 'hi1UiXm8rF4essN3HlaqMz7GoUvy3e4DsVkBAVsg4M'
# OAuth settings: Consumer key
TWITTER_CONSUMER_KEY = '3edIOec4uu00IGFxvQcwJe'
# OAuth settings: Consumer secret
TWITTER_CONSUMER_SECRET = 'YBD6GyFpvumNbNA218RAphszFnkifxR8K9h8Rdtq1A'

为了获得最佳性能,您应该设置django 缓存框架。缓存用于内部和外部存储最后成功的 json 响应(请参阅下面的缓存)。

例子

您可以指定要显示的推文数量:

{% get_tweets for "futurecolors" as tweets limit 10 %}

要过滤掉推文回复(以 @ char 开头):

{% get_tweets for "futurecolors" as tweets exclude "replies" %}

要忽略本地转推:

{% get_tweets for "futurecolors" as tweets exclude "retweets" %}

或者上面的所有内容:

{% get_tweets for "futurecolors" as tweets exclude "replies, retweets" limit 10 %}

搜索标签(实验性)

您可以搜索推文:

{% search_tweets for "python 3" as tweets limit 5 %}

通过 key=value 对支持搜索 api 参数:

{% search_tweets for "python 3" as tweets lang='eu' result_type='popular' %}

用于搜索的相关API 文档。

缓存

强烈建议使用模板缓存框架来减少 twitter API 调用量并避免达到速率限制(目前,15 分钟内 180 个请求):

{% 加载 twitter_tag 缓存 %}
{% 缓存 60 my_tweets %}
{% get_tweets for "futurecolors" as tweets exclude "retweets" %}
...
{% endcache %}

额外的

推文的属性

get_tweets 将推文列表返回到上下文中。每条推文都是一个 json 字典,具有完全相同的属性,如 API 1.1 文档中所述,描述tweet json。Tweet 的创建时间戳被转换为 python 对象并在模板中可用:

{{ tweet.datetime|date:"D d M Y" }}

推文的html

Tweet 还具有额外的html属性,其中包含 tweet,格式化为带有所有需要的链接的 html 输出。请注意,Twitter为开发人员提供了关于嵌入推文的外观的指南。

异常处理

任何 Twitter API 异常(如“容量过剩”)都会被静音和记录。Django 缓存在内部用于存储最后一次成功的响应,以防twitter出现故障。

超越

从 1.0 版开始,您可以为特定的 twitter 查询创建自己的模板标签,此库不支持。只需从twitter_tag.templatetags.twitter_tag.BaseTwitterTag继承 并实现您自己的get_json方法(标签语法由 django-classy-tags 控制)。

发展

要安装开发版本,请使用pip install django-twitter-tag==dev

测试

跑:

DJANGO_SETTINGS_MODULE = twitter_tag.test_settings python setup.py test

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

django-twitter-tag-1.2.1.tar.gz (12.1 kB 查看哈希)

已上传 source