Как я могу использовать запрос в Django для определения его URLconf viewname?

#python #django #django-urls

#python #django #django-urls

Вопрос:

Я могу получить функцию просмотра из request.path :

 from django.core.urlresolvers import resolve
view_func, _args, _kwargs = resolve(request.path)
  

Однако мне нужно нечто большее. Мне нужно взять список имен представлений, например ['edit_foo', 'delete_foo'] , и выяснить, относится ли текущий URL к одному из них.

Я придумал пару идей, используя некоторые внутренние компоненты из django.core.urlresolvers , но я хочу что-то, что будет эффективным и в некоторой степени правильным (т. Е. Не халтурным, идеально документированным).

Комментарии:

1. Почему у вас не может быть списка представлений вместо этого?

2. @Ignacio — вы имеете в виду список реальных вызываемых функций просмотра?

Ответ №1:

После написания этого длинного вопроса я понял это:/ (публикация для тех, кто случайно столкнется с этим). Это довольно просто:

 >>> resolve(request.path).url_name
'edit_foo'
  

Должно быть, я ошибся относительно resolve полезности функции, которая огромна.

Комментарии:

1.Можете ли вы указать, где вы нашли это в документах? Редактировать: Неважно, вот оно: docs.djangoproject.com/en/dev/topics/http/urls/#s-resolve И это применимо только к Django 1.3 . В предыдущих версиях это недоступно.

2. @chrisdpratt — а, хорошая мысль. Я использую trunk для личных проектов, стоит отметить.