【问题标题】:Get reverse URL name from full path从完整路径获取反向 URL 名称
【发布时间】:2014-04-02 15:48:18
【问题描述】:

有谁知道我如何从 request.get_full_path() 中获取 URL 名称?

例如:

我在 urls.py 中有这个 URL

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

在我的 context_processor.py 中:

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

如何返回“evaluation”而不是“/evaluation-active/”?

谢谢

【问题讨论】:

    标签: python django


    【解决方案1】:

    来自 django docs:

    HttpRequest.resolver_match

    Django 1.5 中的新功能。 ResolverMatch 的一个实例,表示 解析的网址。此属性仅在 url 解析完成后设置 place,这意味着它在所有视图中都可用,但在中间件中不可用 在 url 解析发生之前执行的方法(比如 process_request,你可以使用 process_view 代替)。

    ResolverMatch 对象中有url_name 属性:

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

    对于 How to get the current urlname using Django?

    【讨论】:

    • 谢谢,你知道如何在 context_processor.py 中重定向吗?它不起作用
    • @MarcosAguayo 嗯,我不知道,你为什么要在上下文处理器而不是视图中重定向?
    • 我想检查用户是否批准了评估,如果没有重定向到页面。我有 20 页,我尽量不重复代码。
    【解决方案2】:

    如果使用 django 1.5 或更高版本,请使用 request.resolver_match 获取 ResolverMatch 对象。

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

    如果使用 1.5 之前的版本,则使用 resolve:

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

    【讨论】:

      猜你喜欢
      • 2011-04-13
      • 2011-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-05
      • 2011-12-11
      • 1970-01-01
      • 2014-12-08
      相关资源
      最近更新 更多