0

好吧,我有一些似乎无法正常工作的旧 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 项目(确切地说是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']未定义的信息

4

1 回答 1

0

在我看来 Context['request'] 不适合那里...... 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)
于 2011-06-18T23:51:22.963 回答