Как правильно отображать шаблон в представлениях на основе классов? Перевод Django

#python #django

#python #django

Вопрос:

Я работаю над своим приложением Django, в котором я даю пользователям возможность выбирать, хотят ли они видеть веб-сайт на английском или испанском языках.

Проблема здесь в том, что django не отображает правильный шаблон.

Я пробовал «get_template_names» с помощью ключа сеанса языка, но все равно не работает… Я не знаю, является ли проблема здесь функцией отправки.

Любая помощь или комментарии были бы полезны! Спасибо!

views.py

 class PostListView(LoginRequiredMixin, ListView):
    model = Post
    context_object_name = 'posts'
    ordering = ['-date_posted']
    paginate_by = 10

    def get_template_names(self):
        language = self.request.session.get(translation.LANGUAGE_SESSION_KEY)
        if language == 'es':
            return ['blog/home.html']
        else:
            return ['blog/en_home.html']

    def dispatch(self, request, *args, **kwargs):
         event_change_sets(Post.objects.all())
         event_change_sets_co(Post.objects.all())
         return super().dispatch(request, *args, **kwargs)
  

Также активируется LocaleMiddleware.

settings.py

 MIDDLEWARE = [
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.locale.LocaleMiddleware',
    'django.middleware.common.CommonMiddleware',
]

LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'Europe/Madrid'

USE_I18N = True

USE_L10N = True

USE_TZ = True

LANGUAGES = [
    ('en', 'English'),
    ('es', 'Español')
]
  

Ответ №1:

Попробуйте language = self.request.LANGUAGE_CODE вместо language = self.request.session.get(translation.LANGUAGE_SESSION_KEY)