2

djangoプロジェクトをローカライズする必要がありますが、アプリケーションの1つ(ブログ)は英語のみにしてください。

これを実現するために、このミドルウェアを作成しました。

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 に答える