Отключить один из языков для пользователей без прав администратора - PullRequest
0 голосов
/ 30 мая 2018

Я работаю с django 1.11 и хочу сделать один из языков, доступный только для зарегистрированных администраторов - я имею в виду французскую версию.

Для обычных пользователей:

http://www.example.com/en

Для пользователей с правами администратора:

http://www.example.com/en
http://www.example.com/fr

settings.py

LANGUAGES = (
    ('en', _('English')),
    ('fr', _('French')),
)

У меня была идея: from django.contrib.auth.models import User в файле настроек, например:

if User.is_staff:
    LANGUAGES = (
        ('en', _('English')),
        ('fr', _('French')),
    )
else:
    LANGUAGES = (
        ('en', _('English')),
    )

но я получил ошибку:

django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty.

при импорте: from django.contrib.auth.models import User

1 Ответ

0 голосов
/ 30 мая 2018

Это, вероятно, означает, что вы не можете вызвать from django.contrib.auth.models import User до завершения импорта / загрузки настроек.

Вы можете попытаться переместить if User.is_staff: в конец файла настроек, но я 'Я не уверен, что это будет работать.

User.is_staff: не будет работать, потому что User - это модель (класс), а не пользовательский экземпляр.Вы не можете использовать этот тип if в настройках, потому что отдельные пользователи определяются только в вашем цикле запроса / ответа.

Вам придется искать другой подход, но сейчас у меня нет никаких идей.

...