1

次のコードを使用して、その場での言語変更を実装しようとしています。

 {% for lang in LANGUAGES %}
   <li>
      <form name="setLang{{ lang.1}}" action="/i18n/setlang/" method="POST">{% csrf_token %}
          <input name="next" type="hidden" value="http://google.com" />
         <input type="hidden" name="language" value="{{ lang.0 }}" />
        <a href="#" {% if LANGUAGE_CODE = lang.0 %} class="active" {%endif%} onclick="document.setLang{{ lang.1 }}.submit();return false;">{{ lang.0 }}</a>
      </form>
      </li>
{% endfor %}  

問題は、「next」フィールドで指定した URL に戻らないことです。動作を確認するために「google.com」に強制しましたが、ホームページにリダイレクトされ続けます。

ここに私のurls.pyがあります:

urlpatterns = patterns('',
# Examples:
# url(r'^$', 'izolyatsia.views.home', name='home'),
# url(r'^izolyatsia/', include('izolyatsia.foo.urls')),
url(r'^$', 'showcase.views.home', name='home'),
# Uncomment the admin/doc line below to enable admin documentation:
# url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
(r'^project/(?P<project_name>[a-zA-Z0-9_.-]+)/$', 'izolyatsia.views.project'),
(r'^post/(?P<slug>[a-zA-Z0-9_.-]+)/$', 'izolyatsia.views.post'),

#Uncomment the next line to enable the admin:
url(r'^admin/', include(admin.site.urls)),
(r'^tinymce/', include('tinymce.urls')),
url(r'^wysiwyg_post/$', 'izolyatsia.views.wysiwyg_post', name='wysiwyg_post'),
url(r'', include('multiuploader.urls')),
(r'^i18n/', include('django.conf.urls.i18n')),
url(r'^(.*)/$', 'pages.views.show_page', name='show_page'),

)

うまくいかない理由がわかりません。ここにいる誰かが私を助けてくれるでしょうか?

よろしくお願いします、M.

4

2 に答える 2

1

ドメイン外のサイトへのリダイレクトは、コードによって明示的に禁止されています -set_languageビュー呼び出し はdjango.utils.is_safe_url()、まさにそれを行おうとしていないことを確認します。

于 2013-01-27T21:43:46.627 に答える
0

こちらの django doc を参照してください。ここsettings.pyでは、ファイルに次の順序でミドルウェアを配置する必要があることがわかります。

MIDDLEWARE_CLASSES = (
   'django.contrib.sessions.middleware.SessionMiddleware',
   'django.middleware.locale.LocaleMiddleware',
   'django.middleware.common.CommonMiddleware',
)

多分それはあなたに起こっていることかもしれないと思います。

于 2013-01-27T21:58:28.733 に答える