代码之家  ›  专栏  ›  技术社区  ›  Bernhard Vallant

Django:如何在登录时在admin中设置默认语言

  •  4
  • Bernhard Vallant  · 技术社区  · 16 年前

    我考虑的一种可能性是使用中间件,但我认为如果我在 process_request
    任何解决方案都将不胜感激!

    2 回复  |  直到 16 年前
        1
  •  3
  •   Bernhard Vallant    16 年前

    可悲的是,Django在登录/注销时没有发送任何信号(很明显,现在有一张这样的罚单 http://code.djangoproject.com/ticket/5612

    但环顾四周,我发现了一个相当简单而优雅的解决方案,可以在登录/注销时实现信号,而不必接触Django的代码: http://charlesleifer.com/blog/hooking-into-djangos-login-and-logout-two-approaches/

        2
  •  1
  •   Tinh Nguyen    11 年前

    你可以做到以下几点: 在templates/admin/login.html中

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

    在frontend/url.py中

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

    )

    在frontend/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:语言代码='vi'