#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)