我有一些旧的python代码似乎无法正常工作,我已经研究了互联网的目的,试图找到一个修复。
def getURL(self, context):
# Make this an absolute URL- currently it's required for
# links placed in the RSS and XML feeds, and won't
# hurt elsewhere.
req = context['request']
port = req.host[2]
hostname = req.getRequestHostname()
if req.isSecure():
default = 443
else:
default = 80
if port == default:
hostport = ''
else:
hostport = ':%d' % port
path = posixpath.join('/stats',
*(tuple(self.target.pathSegments) + self.relativePathSegments))
return quote('http%s://%s%s%s' % (
req.isSecure() and 's' or '',
hostname,
hostport,
path), "/:")
现在我认为只是context['request']
给了我一些问题,但我不确定。
此代码块来自CIA.vc project(确切地说是link.py),因此如果某些内容没有意义,请检查
我从python获得的第一个错误是:
File "/home/justasic/cia/cia/LibCIA/Web/Stats/Link.py", line 41, in getURL port = req.host[2]
exceptions.TypeError: unindexable object
但是在我发现我认为是一个简单的修复之后,我得到了更多关于context['request']
没有定义的内容
答案 0 :(得分:0)
在我看来,Context ['request']不适合那里...... Context来自哪里?作为参数,您将上下文全部小写。可能你会使用param'context'代替,所以......
a)将Context ['request']设置为context ['request']
...或者,如果您已经使用小写的上下文,并且帖子上只有一个拼写错误,那么
b)我搜索了一段时间,发现了这个片段http://djangosnippets.org/snippets/2428/ ...所以也许这样的事情可能有用:
from django.template import resolve_variable
...
def getURL(self, context):
req = resolve_variable('request', context)