#python #django #url #dispatcher
#python #django #url #диспетчер
Вопрос:
я не знаю, возможно ли это, но я объясню, что я хочу попробовать!
Я создал контекстный процессор, который будет загружать некоторую пользовательскую информацию. В этом контекстном процессоре мне нужно знать, есть ли в списке vars переменная с именем «group», которая будет передана моему представлению, и если есть, я загружу больше вещей.
Процессор получает только объект ЗАПРОСА, и я думаю, что ТОЛЬКО это невозможно.
Но с помощью REQUEST_PATH (из запроса) я мог бы сотворить некоторую магию (с URL-адресами.py) и найдите точное представление и переменную, которые были выбраны django. Есть ли простой способ сделать это (или, может быть … способ? : D ) ?
—- решение —-
Решение (используя то, что говорит yasar11732) выглядит примерно так:
x = resolve(request.META["PATH_INFO"])
if 'group_name' in x.kwargs
do_domething()
Спасибо ! 🙂
Комментарии:
1. Не используйте
has_key
; это устарело. Просто используйтеif 'group_name' in x.kwargs
Ответ №1:
смотрите: разрешить() Это делает именно то, что вы пытаетесь сделать. Имейте в виду, что эта функция выдает исключение 404, если не находит совпадения, поэтому будьте готовы перехватить его.
Ответ №2:
Не могли бы вы просто добавить это выборочно для каждого просмотра? Тогда вы могли бы сделать что-то вроде этого:
def group_processor(request):
# ...
def some_view(request, user, group=None):
# ...
processors = [group_processor] if group else []
context = RequestContext(request, {}, processors)
return render_to_response("my_template.html", context_instance=context)