Это решение не работает, потому что файл urls.py загружается на сервер Django один раз, прежде чем первый пользователь сможет сделать какой-либо запрос, поэтому он должен быть независимым от пользователя файлом (любой код уровня модуля должен быть независимым от пользователя, потому что он загружается только один раз).
Я предполагаю, что Django url resolver делает приведение str () где-то в середине запроса, поэтому вы можете использовать некоторый класс декоратора:
(URLLangDecorator(r'^%s/(?P<slug>[-w]+)/$', ['user']), 'myapp.view.relatedaction')
class URLLangDecorator:
def __init__(self, url, params):
self.url, self.params = url, params
def __str__(self):
return self.url % map(_, self.params)
# Django can also preform "%" operation, so to be safe:
def __mod__(self, arg):
return str(self) % arg
Это предположение, поэтому я не уверен, сработает ли это.