Обновление старого кода django/ витого питона
Ну, у меня есть какой-то старый код на 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), так что если что-то не имеет смысла, проверьте там
также 1-я ошибка, которую я получаю от 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']
не определены после того, как я нашел то, что я думаю, было простым исправлением
1 ответ
Мне кажется, что Context['request'] там не подходит... откуда взялся Context? В качестве параметра вы получите контекст всех строчных букв. Возможно, вы должны использовать вместо этого параметр context, так что...
а) сделать контекст ['запрос'] к контексту ['запрос']
... или, если вы уже используете контекст в нижнем регистре, и это только опечатка здесь в сообщении, то
б) Я некоторое время искал и нашел этот фрагмент http://djangosnippets.org/snippets/2428/... так что, может быть, что-то подобное может сработать:
from django.template import resolve_variable
...
def getURL(self, context):
req = resolve_variable('request', context)