Джанго. Проблема с обратным URL i18N

Эта проблема возникает только на рабочем сервере. Языки в настройках выглядят так:

`LANGUAGE_CODE = 'pl'
LANGUAGES = [
    ('pl', gettext('PL')),
    ('en', gettext('EN')),
]`

@register.simple_tag(takes_context=True)
def unsubscribe_link(context, href):
    domain = 'http://' + Site.objects.get_current().domain
    a = '<a href="%s" target="_self">%s</a>'
    if context.get('preview'):
        return a % ('#', href)
    return a % (domain + context['participant'].get_unsubscribe_url(), href)

модели.участник :

    @models.permalink
    def get_unsubscribe_url(self):
        return ('participant-unsubscribe', [self.pk, self.unsubscribe_hash])

Проблема в том, что шаблонный тег unsubscribe_link возвращает URL-адрес в формате: домен/en-us/xxx/xxx, и, очевидно, ответ URL-адреса равен 404. Если я изменю «en-us» на «pl», все будет работать нормально. Я не могу найти источник этой проблемы. Локальные URL-адреса генерируются правильно.


person mdargacz    schedule 23.04.2014    source источник


Ответы (1)


Я думаю, что ваша проблема связана с настройками локали cronjob:

  1. вместо этого вы можете создать (если он еще не существует) файл /etc/environment и добавить следующую строку:

    LANG=pl_PL.UTF-8
    
  2. измените свою команду:

class Command(BaseCommand):

    can_import_settings = True

    def handle(self, *args, **options):

        # Activate a fixed locale, e.g. Polish
        translation.activate('pl')

        # Or you can activate the LANGUAGE_CODE # chosen in the settings:
        #
        #from django.conf import settings
        #translation.activate(settings.LANGUAGE_CODE)

        # Your command logic here
        # ...

        translation.deactivate()
person PythonicNinja    schedule 23.04.2014