python - 为什么这个表格不会改变网站的语言?
问题描述
这是我的语言转换表格。
{% get_current_language as lang_code %}
{% get_available_languages as languages %}
{% get_language_info_list for languages as langs %}
<form action="{% url 'set_language' %}" method="POST">
{% csrf_token %}
<select name="language" title="{% translate 'Language' %}">
{% for lang in langs %}
<option value="{{ lang.code }}"{% if lang.code == lang_code %} selected{% endif %}>
{{ lang.name_local }} ({{ lang.name_translated }})
</option>
{% endfor %}
</select>
<input type="submit" value="OK" />
</form>
我将它包含在我的基本模板的页脚中。
然后,这是我的课程/urls.py(应用程序网址)。
from django.contrib import admin
from django.urls import path
from django.utils.translation import gettext_lazy as _
from . import views
admin.site.site_header = _("FilFak administration")
admin.site.site_title = _("FilFak admin")
admin.site.index_title = _("Manage FilFak")
urlpatterns=[
path("courses/", views.CourseList.as_view(), name="course_list"),
path("professors/", views.ProfessorList.as_view(), name="professor_list"),
path("exams/", views.ExamList.as_view(), name="exam_list"),
path("courses/<slug:slug>", views.CourseDetails.as_view(), name="course_details"),
path("professors/<slug:slug>", views.ProfessorDetails.as_view(), name="professor_details"),
path("exams/<slug:slug>", views.ExamDetails.as_view(), name="exam_details"),
path("", views.Index.as_view(), name="index"),
]
filfak/urls.py(项目 urls.py)
from django.contrib import admin
from django.urls import path, include
from django.conf.urls.i18n import i18n_patterns
from django.conf.urls.static import static
from django.conf import settings
from django.utils.translation import gettext_lazy as _
urlpatterns = [
path("admin/", admin.site.urls),
path("lang/", include("django.conf.urls.i18n")),
]
urlpatterns += i18n_patterns(
path("", include("courses.urls")),
prefix_default_language=False
)
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
这是来自 settings.py 的中间件列表。
MIDDLEWARE = [
"django.middleware.security.SecurityMiddleware",
"django.contrib.sessions.middleware.SessionMiddleware",
"django.middleware.locale.LocaleMiddleware",
"django.middleware.common.CommonMiddleware",
"django.middleware.csrf.CsrfViewMiddleware",
"django.contrib.auth.middleware.AuthenticationMiddleware",
"django.contrib.messages.middleware.MessageMiddleware",
"django.middleware.clickjacking.XFrameOptionsMiddleware",
]
当我在语言切换表单上单击“确定”时,它实际上只在默认语言的主页上更改了语言。在任何其他 URL 上,它只是刷新页面,而不更改语言。
难道我做错了什么?
解决方案
检查 的标志值USE_I18N
,看起来像是设置为False
,这就是语言设置不正确的原因。
将其更改为:-
USE_I18N = True
根据 Django 文档:-
如果你不使用国际化,你应该花两秒钟在你的设置文件中设置 USE_I18N = False。
推荐阅读
- javascript - VueJS bcrypt 实现
- javascript - 评估数组平均值的问题
- python - 我在绘制球体和曲线时遇到问题
- vim - 在 vim 上设置 prettier 时出现错误 "prettier/prettier: Delete `·· `"
- javascript - webview远程调试控制台命令与android webview
- amazon-web-services - AWS Route53 + S3 静态网站报错:别名目标名称不在目标区域内
- python - Python IDE - 带有 PyCharm 和 vs-code 的文档字符串
- java - 为什么枚举单例是懒惰的?
- python-3.x - Python 子进程返回“NoneValue”而不是日期值
- cassandra - 如何在 cassandra 表中构造分区键以供用户关注