중국에서 weibo라는 "twitter"와 같은 웹 사이트에서 "짹짹"을 얻기 위해 장고 코드를 작성했습니다. 태스크). 이 코드 조각은 로컬 컴퓨터의 Django 테스트 웹 서버 (명령에 의해 시작됨 : python manage.py runserver
)에서 제대로 실행됩니다.Django WSGIRequest.get_full_path()가 전체 URI를 반환하지 않습니다.
def authsucc(request):
APP_KEY = '5032*****'
APP_SECRET = '367362***************'
CALLBACK_URL = 'http://lifein.azurewebsites.net/weibo/authsucc.html'
client = APIClient(app_key=APP_KEY, app_secret=APP_SECRET, redirect_uri=CALLBACK_URL)
r = client.request_access_token(request.build_absolute_uri()[-32:])
#return HttpResponse(request.get_full_path())
access_token = r.access_token
expires_in = r.expires_in
client.set_access_token(access_token, expires_in)
r = client.statuses.user_timeline.get()
resp = ""
for st in r.statuses:
resp += st.text + "<br/>"
return HttpResponse(resp)
을하지만 (는 IIS 8.0 웹 서버에 호스트) 내 윈도우 Azure 웹 사이트의 웹 사이트를 배포 한 후에 문제는 다음과 같습니다
코드 조각이 좋아한다. 함수 호출 request.get_full_path()
가 작동하지 않고 "weibo/authsucc.html"을 반환했지만 실제 요청은 "http://lifein.azurewebsites.net/weibo/authsucc.html?code=08e69b6acb825029f4fa5af1f7ed394d"입니다. 장고의 디버그 모드에서 로컬 변수를 검사했습니다. 그것의 부품 :
request
"<WSGIRequest\npath:/weibo/authsucc.html,\n
GET:<QueryDict: {}>,\n
POST:<QueryDict: >{}>,\n
'HTTP_HOST': 'lifein.azurewebsites.net',\n
'HTTP_X_ORIGINAL_URL': '/weibo/authsucc.html?code=08e69b6acb825029f4fa5af1f7ed394d',\n
'IIS_UrlRewriteModule': '7.1.0761.0',\n
'IIS_WasUrlRewritten': '1',\n
'PATH_INFO': u'/weibo/authsucc.html',\n
'PATH_TRANSLATED':'C:\\\\DWASFiles\\\\Sites\\\\LifeIn\\\\VirtualDirectory0\\\\site\\\\wwwroot\\\\handler.fcgi\\\\weibo\\\\authsucc.html',\n
'QUERY_STRING': '',\n
'REQUEST_METHOD': 'GET',\n
'REQUEST_URI': '/weibo/authsucc.html?code=08e69b6acb825029f4fa5af1f7ed394d',\n 'SERVER_SOFTWARE': 'Microsoft-IIS/8.0',\n
'UNENCODED_URL': '/weibo/authsucc.html?code=08e69b6acb825029f4fa5af1f7ed394d',\n
'URL': '/handler.fcgi',\n
'wsgi.errors': <cStringIO.StringO object at 0x010392A0>,\n
'wsgi.input': <cStringIO.StringI object at 0x012C9458>,\n
'wsgi.multiprocess': True,\n
'wsgi.multithread': False,\n
'wsgi.run_once': False,\n
'wsgi.url_scheme': 'http',\n
'wsgi.version': (1, 0)}>"
우리는 요청의 'REQUEST_URI'와 'HTTP_X_ORIGINAL_URL'속성이 올바르게 설정되어 있는지 볼 수 있습니다, 그러나 GET의 QueryDict는 비어 있습니다. request.get_full_path()
은 로컬 서버에 "/weibo/authsucc.html?code=08e69b6acb825029f4fa5af1f7ed394d"가 아닌 "/weibo/authsucc.html"을 반환합니다. 이 문제를 해결하는 방법을 궁금해. 누구든지 나를 도울 수 있을까?
아마도 버전에 따라 다르 겠지만 request.get_full_path()에는 1.6까지의 문서에 따라 쿼리 매개 변수가 있습니다 (문서가 보관 처리 됨) – ThatsAMorais