Получить имя для сопоставленного шаблона URL - PullRequest
1 голос
/ 25 июня 2009

Я пишу контекстный процессор Django, которому требуется доступ к имени шаблона URL, с которым был успешно разрешен запрос. Учитывая шаблон,

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

и путь запроса / home, я хочу получить значение для имени, которое в данном случае является 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

Я могу использовать это для достижения своей цели, но мое внутреннее чувство говорит, что должен быть лучший метод. Спасибо за помощь.

1 Ответ

1 голос
/ 25 июня 2009

А как насчет этого через объект запроса и промежуточное ПО? Как:

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 везде после выполнения промежуточного программного обеспечения.

Приветствия

...