[英]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.