Django 在过滤器函数中访问语言代码



我在 django 模板中有一些项目列表,我遍历这个列表来构建我的记录表。 在其中一个字段中,我有一个字典键(int 从 1 到 12(。我写了一个过滤器来更改键整数以获得好看的名字。我想在过滤器返回之前检查当前的用户语言。是否可以在 Django 的过滤器/标签函数中检查语言代码?

这是我在模板中的循环:

{% for field in fields_list %}
<div class="row row-eq-height">
<div class="col-padding-5"><div class="cart-tab-row">{{ forloop.counter }}</div></div>
<div class="col-padding-5"><div class="cart-tab-row">{{ field.field_name }}</div></div>
<div class="col-padding-5"><div class="cart-tab-row">{{ trans field.c_type|get_cname }}</div></div>
<div class="col-padding-5"><div class="cart-tab-row">{{ field.area|floatformat:2 }}</div></div>
<div class="col-padding-5"><div class="cart-tab-row">{{ field.price|floatformat:2 }}</div></div>
</div>
{% endfor %}

这是我的过滤功能

@register.filter
def get_cname(key):
ctype = CesTypesDict.objects.filter(id=key)[0]
return ctype.english_type_name

在正常视图中,我从请求属性访问此信息,但在过滤器中,我无权访问请求对象。

Django 通过get_language函数使当前请求-响应周期的语言全局可用。所以你不需要请求对象:

from django.utils.translation import get_language
@register.filter
def get_cname(key):
# ...
language_code = get_language()
# do stuff with language_code
return ...

最新更新