2013-10-11 2 views
0

Я хочу сократить URL-адреса с помощью bit.ly через шаблон django. Я написал приведенные ниже коды templatetag, но я получаю следующую ошибку: Кажется, она не может понять весь день!ValueError: Unkown url type in Django

ValueError: unkown url type:unknown url type: https%3A//api- ssl.bitly.com/v3/shorten%3Faccess_token%3DR_b622c9b2d53899697d6a78c088895f20%26longUrl%3Dhttp%3A//www.google.com%26format%3Dtxt 




@register.simple_tag 
def bitlys(long_url): 
    endpoint='https://api-ssl.bitly.com/v3/shorten?access_token={0}&longUrl={1}&format=txt' 
    req= urllib.quote(endpoint.format(settings.ACCESS_KEY, long_url)) 
    return urlopen(req).read() 

Шаблон

{% bitlys 'http://www.manman.com' %} 

ответ

1

вы, вероятно, только хочу процитировать long_url и не вся строка

endpoint = 'https://api-ssl.bitly.com/v3/shorten?access_token={0}&longUrl={1}&format=txt' 
req = endpoint.format(settings.ACCESS_KEY, urllib.quote(long_url)) 
return urlopen(req).read() 
+0

После после того, что вы сказали, я поставил REQ = urllib.quote (endpoint.format (long_url)), и я получаю ошибку «tuple index out the range» – picomon

+0

Я думаю, что ключ доступа должен быть включен? для его сокращения URL. Пожалуйста, еще раз объясните, что вы на самом деле имели в виду. – picomon

+0

Ваша кодировка части протокола URL, если вы этого не сделаете. Вот почему «api-ssl.bitly.com»; выглядит так: «https% 3A // api-ssl.bitly.com» 'endpoint = 'https://api-ssl.bitly.com/v3/shorten?access_token=%s&longUrl=%s&format=txt'% (settings.ACCESS_KEY, urllib.quote (long_url)) return urlopen (конечная точка) .read() ' – toad013