Django中的URL检测和缩短
URL detection and shortening in Django
我只是想知道Django中是否有一种方法可以从一堆文本中检测URL,然后自动缩短它们。我知道我可以使用urlize来检测url,但我不确定我是否可以使用bitly或其他东西来缩短链接。
此外,用javascript而不是python来完成这项任务会更好吗?如果是这样的话,我该怎么办?
对于bit.ly,如果你只想缩短URL,它很简单:
首先创建帐户,然后访问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()
你可以把它包装成一个模板标签:
@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()
然后在您的模板中:
{% bitlyfy "http://www.google.com" %}
注意:标签中的位置参数是django 1.4的一个功能
如果您想要bit.ly API的所有功能,请先阅读dev.bitly.com/get_started.html上的文档,然后下载官方的python客户端。
如果您想使用Bitly API,模板标签应该变成:
from django import template from django.conf import settings
import bitly_api import sys import os
register = template.Library()
BITLY_ACCESS_TOKEN="blahhhh"
@register.simple_tag def bitlyfy(the_url):
bitly = bitly_api.Connection(access_token=BITLY_ACCESS_TOKEN)
data = bitly.shorten(the_url)
return data['url']
有一件事我无法在我的模板中管理:
{% bitlyfy request.get_full_path %}
{% bitlyfy {{request.get_full_path}} %}
这两种方法都不起作用,不确定如何解决。欢迎任何帮助!
If you are using bit.ly then the best code to shorten url is:
import urllib
import urllib2
import json
link = "http://www.example.com/foo/bar/zoo/hello/"
values = {'access_token' : BITLY_ACCESS_TOKEN,
'longUrl' : link}
url = "https://api-ssl.bitly.com/v3/shorten"
data = urllib.urlencode(values)
req = urllib2.Request(url,data)
response = (urllib2.urlopen(req).read()).replace(''/', '/')
bitly_url = (json.loads(response))['data']['url']
return bitly_url
相关文章:
- 如何使用密码检测网络中的状态连接
- 在不阻止默认行为的情况下检测IE10中的缩放
- 正在获取Angular以检测$scope中的更改
- 正在检测html5手机中的抖动
- 如何在jquery中检测浏览器的后退按钮,如果有任何对话框打开,请关闭它
- Javascript检测TAG中的完整URL
- Angularjs指令如何检测属性中的更改
- javascript中的对象检测和跟踪
- 如何使用javascript检测不可滚动元素中的滚动事件和方向
- 如何检测{{#每个页面}}中的页面是否为当前页面
- 检测angularjs中的输入文本长度
- Django中的URL检测和缩短
- angular应用程序中的浏览器功能检测:使用服务、指令、控制器
- 用Chrome检测Windows8+中的自定义协议处理程序
- 如何使用javascript检测数据表分页的其他页面中的复选框
- 如何检测网页中的更改并使用Javascript播放声音
- 检测通过移动 Safari 中的 JavaScript 关闭浏览器选项卡
- 如何在 react.js 中检测父组件中的子渲染
- 变化检测中的角度2+GridStack错误
- PHP浏览器检测中的Javascript