2013-10-11 3 views
0

django 템플릿을 통해 bit.ly로 URL을 줄이고 싶습니다. 아래 templatetag 코드를 작성했지만 아래 오류가 발생합니다. 하루 종일 알아낼 수 없습니다!ValueError : 장고의 알 수없는 URL 유형

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 of range"오류가 발생했습니다 – picomon

+0

액세스 키가 포함되어야한다고 생각합니까? 그것을 위해 URL을 단축하십시오. 당신이 진정으로 의미했던 바를 자세히 설명해주십시오. – picomon

+0

인코딩 할 때 URL의 프로토콜 부분을 인코딩해야합니다. 그것이 "api-ssl.bitly.com"인 이유입니다. "https % 3A // api-ssl.bitly.com"처럼 보입니다. 엔드 포인트 = 'https://api-ssl.bitly.com/v3/shorten?access_token=%s&longUrl=%s&format=txt'% ( return urlopen (끝점) .read()' – toad013