django i18n 切换语言能在runserver下工作,当用apache时就不正常工作 求大神帮助??


html代码如下:


 <form action="/i18n/setlang/" method="post" id="change_language_form">
{% csrf_token %}
{% get_language_info_list for LANGUAGES as languages %}
{% for language in languages %}
    <td>
    <a  href="#" lang_code="{{ language.code }}" class="change_language">
        {% if language.code == "zh-cn" %}
        简体
        {% else %}
        Eng
        {% endif %}
    </a>
    </td>
 {% endfor %}
<input type="hidden" value="" name="language" id="language" />
</form>
</form>

js代码:


 $('.change_language').click(function(e){
           e.preventDefault();
           $('#language').val($(this).attr('lang_code'));
           $('#change_language_form').submit();
           return false;
       }
   );

django settings.py设置如下:

。。。。。。。。。。。。。。。。。


 USE_I18N = True

# If you set this to False, Django will not format dates, numbers and
# calendars according to the current locale.

USE_L10N = True
ugettext = lambda s: s

LANGUAGES = (
    ('zh-cn', ugettext('Chinese')),
    ('en', ugettext('English')),
)

MIDDLEWARE_CLASSES = (
    'middleware.createuserinfo.CreateUserInfoMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.cache.UpdateCacheMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.locale.LocaleMiddleware',
    'pagination.middleware.PaginationMiddleware',
    'django_authopenid.middleware.OpenIDMiddleware',
    'django.middleware.cache.FetchFromCacheMiddleware',
    'django.middleware.transaction.TransactionMiddleware',
    'djangobb_forum.middleware.LastLoginMiddleware',
    'djangobb_forum.middleware.UsersOnline',
)

。。。。。。。。。。。。。。。。。。。。。。。。。。

djangoz中urls.py设置加入了


 url(r'^i18n/', include('django.conf.urls.i18n'))

apache django runserver i18n

阿斯特拉塔 10 years, 6 months ago

将带有cache的所有middleware注销掉就行

hyper answered 10 years, 6 months ago

Your Answer