1

リクエストが正常に解決された URL パターンの名前にアクセスする必要がある Django コンテキスト プロセッサを作成しています。パターンを考えると、

url(r'^home/$', 'app.index', name='website.home')

リクエスト パス /home から、name の値を取得したいと思います。この場合は website.home です。

djangosnippets.org からこのコードを取得しました。

def _get_named_patterns():
    """ Returns a list of (pattern-name, pattern) tuples.
    """
    resolver = urlresolvers.get_resolver(None)
    patterns = sorted(
        (key, val[0][0][0]) for key, val in resolver.reverse_dict.iteritems() if isinstance(key, basestring))
    return patterns

これを使用して目的を達成できますが、私の直感では、より良い方法が必要であると言っています. 助けてくれてありがとう。

4

1 に答える 1

1

リクエストオブジェクトとミドルウェアを介してそれを行うのはどうですか? お気に入り:

class MyMiddleware (object):
  def process_view (self, request, view_func, view_args, view_kwargs):
    if view_kwargs.get ('name', None):
      request.name = view_kwargs.get ('name', None)
    ret None

そして、settings.py でデフォルトのコンテキスト プリプロセッサを使用します。

"django.core.context_processors.request",

request.nameその後、ミドルウェアが実行された後、どこからでも名前を取得できます。

乾杯、

于 2009-06-25T09:44:08.853 に答える