我写了一段 Django 代码来从中国称为 weibo 的“twitter”之类的网站获取“tweets”。(实际上问题与此任务无关)。这段代码在我的本地计算机 Django 测试网络服务器中正常运行(由命令: 启动python manage.py runserver
)。
代码片段喜欢这些:
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)
但问题是在我将网站部署到我的 Windows Azure 网站(在 IIS 8.0 网络服务器上托管)之后。函数调用request.get_full_path()
不起作用,只返回“weibo/authsucc.html”,而实际请求是“ http://lifein.azurewebsites.net/weibo/authsucc.html?code=08e69b6acb825029f4fa5af1f7ed394d ”我检查了 Django 中的本地变量调试模式。部分内容:
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”而不是例外的“/weibo/authsucc.html?code=08e69b6acb825029f4fa5af1f7ed394d”。我想知道如何解决这个问题。有人可以帮我吗?