2

我需要本地化一个 django 项目,但只保留一个应用程序(博客)英语。

我编写了这个中间件来实现这一点:

from django.conf import settings
from django.core.urlresolvers import resolve

class DelocalizeMiddleware:
    def process_request(self, request):
        current_app_name = __name__.split('.')[-2]
        match = resolve(request.path)
        if match.app_name == current_app_name:
            request.LANGUAGE_CODE = settings.LANGUAGE_CODE

问题是,它假设中间件直接位于应用程序模块(例如blog/middleware.py)中以检索应用程序名称。其他项目可能在blog/middleware/delocalize.py或其他东西中有中间件。

检索当前正在运行的应用程序名称的最佳方法是什么?

4

1 回答 1

1

您可以使用 Django 的resolve函数来获取当前的应用程序名称。

https://docs.djangoproject.com/en/dev/topics/http/urls/#resolve

于 2012-03-17T05:28:55.130 回答