本文介紹 django.views.i18n.set_language
的用法。
聲明
set_language(request)
為方便起見,Django 帶有一個視圖
,它設置用戶的語言偏好並重定向到給定的 URL,或者默認情況下返回上一頁。django.views.i18n.set_language()
通過將以下行添加到您的 URLconf 來激活此視圖:
path('i18n/', include('django.conf.urls.i18n')),
(請注意,此示例使視圖在 /i18n/setlang/
可用。)
警告
確保您沒有在
中包含上述 URL - 它本身需要獨立於語言才能正常工作。i18n_patterns()
該視圖預計將通過POST
方法調用,並在請求中設置language
參數。如果啟用了會話支持,視圖會將語言選擇保存在用戶的會話中。它還將語言選擇保存在默認名為 django_language
的 cookie 中。 (可以通過
設置更改名稱。)LANGUAGE_COOKIE_NAME
設置語言選擇後,Django 在POST
或GET
數據中查找next
參數。如果找到並且 Django 認為它是一個安全的 URL(即它不指向不同的主機並使用安全方案),將執行到該 URL 的重定向。否則,Django 可能會退回到將用戶從 Referer
標頭重定向到 URL,或者,如果未設置,則重定向到 /
,具體取決於請求的性質:
- 如果請求接受 HTML 內容(基於其
Accept
HTTP 標頭),則將始終執行回退。 - 如果請求不接受 HTML,則僅當設置了
next
參數時才會執行回退。否則將返回 204 狀態碼(無內容)。
這是示例 HTML 模板代碼:
{% load i18n %}
<form action="{% url 'set_language' %}" method="post">{% csrf_token %}
<input name="next" type="hidden" value="{{ redirect_to }}">
<select name="language">
{% get_current_language as LANGUAGE_CODE %}
{% get_available_languages as LANGUAGES %}
{% get_language_info_list for LANGUAGES as languages %}
{% for language in languages %}
<option value="{{ language.code }}"{% if language.code == LANGUAGE_CODE %} selected{% endif %}>
{{ language.name_local }} ({{ language.code }})
</option>
{% endfor %}
</select>
<input type="submit" value="Go">
</form>
在這個例子中,Django 在redirect_to
上下文變量中查找用戶將被重定向到的頁麵的 URL。
相關用法
- Python Django set用法及代碼示例
- Python dict setdefault()用法及代碼示例
- Python calendar setfirstweekday()用法及代碼示例
- Python set clear()用法及代碼示例
- Python OpenCV setWindowTitle()用法及代碼示例
- Python set()用法及代碼示例
- Python setattr()用法及代碼示例
- Python set copy()用法及代碼示例
- Python set add()用法及代碼示例
- Python set symmetric_difference_update()用法及代碼示例
- Python OpenCV setTrackbarPos()用法及代碼示例
- Python seaborn.swarmplot()用法及代碼示例
- Python seaborn.residplot()用法及代碼示例
- Python Django serve用法及代碼示例
- Python seaborn.regplot()用法及代碼示例
- Python Django sensitive_variables用法及代碼示例
- Python seaborn.PairGrid()用法及代碼示例
- Python Tableau server_info.get用法及代碼示例
- Python Pandas series.cummax()用法及代碼示例
- Python seaborn.boxenplot()用法及代碼示例
- Python Pandas series.cumprod()用法及代碼示例
- Python seaborn.pairplot()用法及代碼示例
- Python seaborn.factorplot()用法及代碼示例
- Python seaborn.FacetGrid()用法及代碼示例
- Python seaborn.lineplot()用法及代碼示例
注:本文由純淨天空篩選整理自djangoproject.com大神的英文原創作品 django.views.i18n.set_language。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。