只有當用戶選擇英文時,我纔有必要在此處輸入www.example.com/something/something/
至www.example.com/en/something/something/
。根據用戶選擇的語言進行網址重寫
這是一個現有的網站已完成在Django的URL與正常的部分完成。現在,如果用戶選擇英文,我必須重寫網址。
我以爲我可以手動啓動改變Django模板所有的URL像這樣
{% if request.session.language == 'en' %}
<a href="/en/something"..>
{% else %}
<a href="/something"..>
{% endif %}
但我一直要求不要做這種方式的鏈接的數量實在是太多了做這樣。
後來我想嘗試一個自定義的中間件,在那裏我可以訪問請求對象process_request
,做return HttpResponsePermanentRedirect(redirect_url)
但似乎process_request
處理所有的請求一個接一個,包括圖像等各個環節。但我想要的是第一個請求,即請求的實際url。
所以我在中間件的構造函數中嘗試了相同的操作,希望它只會被調用一次,那將是第一個請求。但我面臨的問題是,__init__
只接受self
和**args
而不是request
對象,所以我無法訪問那裏的會話變量。
我想過在apache中嘗試這種方式,但只有在用戶選擇英文語言時,我才需要執行url重定向。
Burhan Khalid先生非常感謝你。我會立即嘗試,並讓你知道。再次感謝 – 2013-03-06 07:17:08
我可以問一下,這個可以在url中做「i18n_patterns」嗎?這是我第一次看到,只是想學習新東西:) – catherine 2013-03-06 07:20:58
您好先生Burhan,我使用的是django 1.3,它會拋出一個導入錯誤,如果我從django.conf.urls.i18n導入i18n_patterns – 2013-03-06 07:26:14