简体   繁体   English

从完整路径获取反向URL名称

[英]Get reverse URL name from full path

Does anyone knows how I can get the URL name from the request.get_full_path()? 有谁知道我如何从request.get_full_path()获取URL名称?

For example: 例如:

I have this URL in urls.py 我在urls.py中有此URL

url(r'^evaluation-active/$', 'web.evaluation.evaluation', name='evaluation'),

In my context_processor.py: 在我的context_processor.py中:

def is_evaluation(request):
    return {"test":request.get_full_path()}

How can I return "evaluation" instead of "/evaluation-active/"? 如何返回“评估”而不是“ / evaluation-active /”?

Thanks 谢谢

From django docs : 从django docs

HttpRequest.resolver_match HttpRequest.resolver_match

New in Django 1.5. Django 1.5的新功能。 An instance of ResolverMatch representing the resolved url. 代表解析的URL的ResolverMatch实例。 This attribute is only set after url resolving took place, which means it's available in all views but not in middleware methods which are executed before url resolving takes place (like process_request, you can use process_view instead). 仅在发生URL解析之后才设置此属性,这意味着该属性在所有视图中可用,但在发生URL解析之前执行的中间件方法中不可用(例如process_request,可以改用process_view)。

There is url_name attribute in ResolverMatch object: ResolverMatch对象中有url_name属性:

def is_evaluation(request):
    return {"test": request.resolver_match.url_name}

For django version < 1.5 there is answer here: How to get the current urlname using Django? 对于<1.5的django版本,这里有答案: 如何使用Django获取当前的urlname?

If using django 1.5 or higher, use request.resolver_match to get the ResolverMatch object. 如果使用django 1.5或更高版本,请使用request.resolver_match获取ResolverMatch对象。

def is_evaluation(request):
    return {"test":request.resolver_match.url_name}

if using version before 1.5, then use resolve: 如果使用1.5之前的版本,请使用resolve:

def is_evaluation(request):
    return {"test":resolve(request.path_info).url_name}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM