Django: Как установить язык по умолчанию в админке при входе в систему - PullRequest
4 голосов
/ 31 мая 2010

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

Одна возможность, о которой я думал, это использование промежуточного программного обеспечения, но я думаю, что если я сделаю это на process_request, я не увижу там пользовательский объект, поскольку он обрабатывается ПОСЛЕ промежуточного программного обеспечения, поэтому я мог только установить егопосле следующего запроса!
Любые решения приветствуются!

Ответы [ 2 ]

3 голосов
/ 02 июня 2010

Печально то, что Django не посылает никаких сигналов при входе в систему / выходе из системы (очевидно, для этого есть билет на http://code.djangoproject.com/ticket/5612).

Но, оглядываясь по сторонам, я нашел довольно простое и элегантное решение для реализации сигналов при входе / выходе из системы, не касаясь кода Джанго: http://charlesleifer.com/blog/hooking-into-djangos-login-and-logout-two-approaches/

1 голос
/ 25 апреля 2015

Вы можете сделать следующее: В шаблонах / admin / login.html

<script type="text/javascript">
            $(function(){
                $.ajax({
                    type : 'POST',
                    url : "{% url 'setLangueDefault' %}",
                    dataType : 'JSON',
                    success : function(data) {
                        //
                    }
                });
            });
        </script>

В интерфейсе / urls.py

urlpatterns = patterns('frontend.views',
    ...
    url(r'^set-language-default/$', views.setLangueDefault, name='setLangueDefault'),
    ....

)

В интерфейсе / views.py

from django.conf import settings
...
def setLangueDefault(request):
    language = settings.LANGUAGE_CODE
    if hasattr(request, 'session'):
        if 'django_language' in request.session:
            language = request.session['django_language']
    if language:
        request.session['django_language'] = language
    if request.is_ajax():
        message = {'status' : 0, 'info' : 'done'}
        return JsonResponse(json.dumps(message))
    return HttpResponseRedirect('/')

Обратите внимание на язык конфигурации по умолчанию в settings.py Exp: LANGUAGE_CODE = 'vi'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...