有没有办法知道URL Dispatcher传递给哪个变量名来查看?

时间:2011-11-04 21:25:31

标签: python django url dispatcher

我不知道这是否可行,但我会解释我想要的尝试!

我制作了一个Context Processor来加载一些用户信息。 我需要知道,在这个上下文处理器中,如果在vars列表中有一个名为“group”的变量将传递给我的视图,如果是,我将加载更多东西。

处理器只接收REQUEST对象,我认为这是不可能的。

但是,使用REQUEST_PATH(来自请求)我可以制作一些魔法(w / urls.py)并找到django选择的确切视图和变量。有没有一种简单的方法可以做到这一点(或者......可能......方式?:D)?

----解决方案----

解决方案(使用yasar11732所说的)是这样的:

x = resolve(request.META["PATH_INFO"])
if 'group_name' in x.kwargs
    do_domething()

谢谢! :)

2 个答案:

答案 0 :(得分:2)

请参阅:resolve()它完全符合您的要求。请注意,如果找不到匹配项,此函数会抛出404异常,因此请准备好捕获它。

答案 1 :(得分:0)

你能否有选择地在每个视图的基础上添加它?然后你可以做这样的事情:

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)