首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用Django获取当前的url名称?

如何使用Django获取当前的url名称?
EN

Stack Overflow用户
提问于 2010-03-22 19:00:19
回答 8查看 83.9K关注 0票数 97

我必须根据当前的url动态构建一个url。使用{% url %}标记是最简单的方法,但我需要当前的url名称来动态生成新的url名称。

如何将url名称附加到指向当前视图的urlconf?

编辑:我知道我可以使用get_absolute_url手工制作url,但我宁愿避免它,因为它是讲座的一部分,我只想演示一种构建url的方法。

学生们知道如何使用{% url %}。当他们必须基于当前url生成更完整的url时,他们知道面临着一个问题。最简单的方法是再次使用{% url %},但有一些变化。由于我们已经将url命名为,因此我们需要知道如何获取调用当前视图的url的名称。

编辑2:另一个用例是根据基本模板不同地显示基本模板的各个部分。还有其他方法可以做到这一点(使用CSS和{% block %},但有时,如果视图名称与链接匹配,则能够删除base.html菜单项的标记是很好的。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2012-01-10 19:13:20

我不知道这个特性成为Django的一部分多久了,但正如following article所示,它可以在视图中实现如下所示:

代码语言:javascript
复制
   from django.core.urlresolvers import resolve
   current_url = resolve(request.path_info).url_name

如果您在每个模板中都需要它,那么编写一个模板请求可能是合适的。

编辑:应用新的DJANGO更新

在当前的Django更新之后:

Django 1.10 (link)

为支持其新位置django.urls,不建议使用从django.core.urlresolvers模块导入

Django 2.0 (link)

将删除django.core.urlresolvers模块,以支持其新位置django.urls

因此,正确的方法是这样做:

代码语言:javascript
复制
from django.urls import resolve
current_url = resolve(request.path_info).url_name
票数 145
EN

Stack Overflow用户

发布于 2013-07-12 19:37:15

从Django 1.5开始,可以从request对象访问它

代码语言:javascript
复制
current_url = request.resolver_match.url_name

如果您希望url名称与命名空间一起使用

代码语言:javascript
复制
current_url = request.resolver_match.view_name

https://docs.djangoproject.com/en/dev/ref/request-response/#django.http.HttpRequest.resolver_match

票数 123
EN

Stack Overflow用户

发布于 2016-07-02 03:42:08

对于那些命名空间为其url模式的用户,您可能会对请求的命名空间的url名称感兴趣。在本例中,Django将其命名为view_name

代码语言:javascript
复制
request.resolver_match.view_name

# return: <namespace>:<url name>
票数 31
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2491605

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档