我在他的用户配置文件保存在用户的默认语言,并在登录我想将管理员的默认语言设置为它。Django的:如何设置默认语言在管理上登录
我想到的一种可能性是使用中间件,但我认为如果我在process_request
上执行该操作,则不会在该处看到用户对象,因为这是在中间件之后处理的,所以我只能在下一个请求!
任何解决方案,不胜感激!
我在他的用户配置文件保存在用户的默认语言,并在登录我想将管理员的默认语言设置为它。Django的:如何设置默认语言在管理上登录
我想到的一种可能性是使用中间件,但我认为如果我在process_request
上执行该操作,则不会在该处看到用户对象,因为这是在中间件之后处理的,所以我只能在下一个请求!
任何解决方案,不胜感激!
可悲的是Django不发送的登录/注销的任何信号(显然有一票开放,在http://code.djangoproject.com/ticket/5612)。
但环顾四周,我发现对于没有接触Django的代码实现对登录/注销的信号相当简单和优雅的解决方案:http://charlesleifer.com/blog/hooking-into-djangos-login-and-logout-two-approaches/
你可以做如下: 在模板/管理/ 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 精通配置默认语言:LANGUAGE_CODE = 'VI'
即[票](https://code.djangoproject.com/机票/ 5612)已修好,我们现在可以享受登录/注销信号! :) – 2011-06-21 15:37:18