Django中的URL检测和缩短

san*_*aet 1 javascript python django

我只是想知道Django是否有办法从一堆文本中检测URL然后自动缩短它们.我知道我可以使用urlize来检测网址,但我不确定我是否可以使用点滴或其他东西来缩短链接.

用javascript而不是python来完成这个任务会更好吗?如果是这样的话我该怎么办呢?

Bur*_*lid 5

对于bit.ly如果你只是想缩短网址,它很简单:

首先创建一个帐户,然后访问http://bitly.com/a/your_api_key以获取您的API密钥.

发送请求到API 的缩短方法,结果是缩短的URL:

from urllib import urlencode
from urllib2 import urlopen

ACCESS_KEY = 'blahblah'
long_url = 'http://www.example.com/foo/bar/zoo/hello/'
endpoint = 'https://api-ssl.bitly.com/v3/shorten?access_token={0}&longUrl={1}&format=txt'
req = urlencode(endpoint.format(ACCESS_KEY, long_url))
short_url = urlopen(req).read()
Run Code Online (Sandbox Code Playgroud)

您可以将其包装到模板标记中:

@register.simple_tag
def bitlyfy(the_url):
    endpoint = 'https://api-ssl.bitly.com/v3/shorten?access_token={0}&longUrl={1}&format=txt'
    req = urlencode(endpoint.format(settings.ACCESS_KEY, the_url))
    return urlopen(req).read()
Run Code Online (Sandbox Code Playgroud)

然后在你的模板中:

{% bitlyfy "http://www.google.com" %}

注意:标记中的位置参数是django 1.4的一个特性

如果你想要bit.ly API的所有功能,首先阅读dev.bitly.com/get_started.html上的文档,然后下载官方的python客户端.

  • 但如果我输入了一段由用户输入的文本,并且段落中有一些URL,该怎么办?所以我希望自动检测URL,然后缩短.会不会做所有这些? (2认同)