4

我将用户的默认语言保存在他的用户个人资料中,登录时我想将管理员的默认语言设置为它。

我正在考虑的一种可能性是使用中间件,但我认为如果我这样做,process_request我不会在那里看到用户对象,因为这是在中间件之后处理的,所以我只能在下一个请求之后设置它!
任何解决方案都非常感谢!

4

2 回答 2

3

可悲的是 Django 在登录/注销时没有发送任何信号(显然在http://code.djangoproject.com/ticket/5612上有一张票)。

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

于 2010-06-02T16:40:43.830 回答
1

您可以执行以下操作:在 templates/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'

于 2015-04-25T08:08:16.823 回答