我在他的用戶配置文件保存在用戶的默認語言,並在登錄我想將管理員的默認語言設置爲它。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