支持django-rest-framework的多语言
项目描述
django-parler-rest
为 django-rest-framework 添加翻译支持.
此软件包将 django-parler 中的 TranslatableModels 支持添加到 django-rest-framework。
安装
pip install django-parler-rest
用法
- 首先确保你已经安装并配置了 django-parler_。
- 使用下面的序列化器示例来公开翻译。
首先配置一个模型,按照 django-parler 文档 进行操作
from django.db import models
from django.utils.translation import gettext_lazy as _
from parler.models import TranslatableModel, TranslatedFields
class Country(TranslatableModel):
"""
Country database model.
"""
country_code = models.CharField(_("Country code"), unique=True, db_index=True)
translations = TranslatedFields(
name = models.CharField(_("Name"), max_length=200)
url = models.URLField(_("Webpage"), max_length=200, blank=True)
)
class Meta:
verbose_name = _("Country")
verbose_name_plural = _("Countries")
def __str__(self):
return self.name
模型翻译可以作为单独的序列化器公开
from rest_framework import serializers
from parler_rest.serializers import TranslatableModelSerializer, TranslatedFieldsField
from .models import Country # Example model
class CountrySerializer(TranslatableModelSerializer):
translations = TranslatedFieldsField(shared_model=Country)
class Meta:
model = Country
fields = ('id', 'country_code', 'translations')
注意: TranslatedFieldsField
只能在继承自 TranslatableModelSerializer
的序列化器中使用。
这将在JSON输出中将字段作为单独的字典暴露出来
{
"id": 528,
"country_code": "NL",
"translations": {
"nl": {
"name": "Nederland",
"url": "http://nl.wikipedia.org/wiki/Nederland"
},
"en": {
"name": "Netherlands",
"url": "http://en.wikipedia.org/wiki/Netherlands"
},
"de": {
"name": "Niederlande",
"url": "http://de.wikipedia.org/wiki/Niederlande"
}
}
}
贡献
本模块设计为通用。如果您对本模块有任何不满意的地方,或者认为它不够灵活,请告诉我们。我们非常乐意改进它!
如果您有任何其他有价值的贡献、建议或想法,也请告诉我们,因为我们会考虑它。我们也欢迎Pull requests。:-)
运行测试
测试使用 py.test
运行
python setup.py test # install dependencies and run tests with coverage
项目详情
关闭
哈希值 for django_parler_rest-2.2-py2.py3-none-any.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 3cba9a47ec64771394e99ca49f9bef6f7dd76c1e39634fd634d2c1050fb9630a |
|
MD5 | ab01c402fac9ceeb2674ffd12d801c5e |
|
BLAKE2b-256 | 9264e4656794c743d0009425183b9cedfa79206c648902e6a41a758116784b8f |