一个 django 模板标签,用于显示用户最近的推文。
项目描述
一个 django 模板标签,用于显示用户最近的推文/搜索结果。1.0 版使用 Twitter API 1.1。
基本功能是限制显示的推文数量,过滤掉回复和转发。库在模板中公开每个推文json,添加额外的属性:html和datetime。第一个使 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