我有一个 Django 项目,我根据Accept-Language
每个视图的标题激活翻译,如下所示,
from django.utils import translation
translation.activate(request.headers.get('Accept-Language', 'en'))
因此,如果我有一个使用 Django Rest Framework 的 ViewSet,我必须对每个方法执行上述操作,如下所示,
class MyViewSet(viewsets.ModelViewSet):
def list(self, request, *args, **kwargs):
translation.activate(request.headers.get('Accept-Language', 'en'))
# ....
def retrieve(self, request, *args, **kwargs):
translation.activate(request.headers.get('Accept-Language', 'en'))
# ....
def update(self, request, *args, **kwargs):
translation.activate(request.headers.get('Accept-Language', 'en'))
# ....
def destroy(self, request, *args, **kwargs):
translation.activate(request.headers.get('Accept-Language', 'en'))
# ....
这只是一个视图集,我目前有 10 多个视图集,每个视图集都需要翻译。这使得该过程更加难以维护,并导致大量代码重复。如何将此代码清理为像在整个项目范围内激活翻译之类的东西,有任何可用的选项吗?
感谢您的任何意见。