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

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

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

学生们知道如何使用{% url %}.当他们必须基于当前URL生成更完整的URL时,知道他们面临问题.最简单的方法是再次使用{% url %},但有一些变化.因为我们已经将url命名为we need to know how to get the name of the url that called the current view.

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

推荐答案

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

   from django.core.urlresolvers import resolve
   current_url = resolve(request.path_info).url_name

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

Edit: APPLYING NEW DJANGO UPDATE

在当前的Django更新之后:

Django 1.10 (link)

中不建议从django.core.urlresolvers模块导入 对新地点的青睐,django.urls

Django 2.0(link)

django.core.urlresolvers模块已移除,取而代之的是其新的 位置,django.urls号.

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

from django.urls import resolve
current_url = resolve(request.path_info).url_name

Django相关问答推荐

如何使用Django';S生成的字段来统计相关对象?

Django-HTMX:呈现到不同目标的表单验证错误

没有与给定查询匹配的监视列表

Django没有';t显示黄页

Django 按月分组并按月显示在模板中

root urls.py 是 Django 中的 config/urls.py 吗?

为什么 django 不能相互识别 2 个路径转换器?

如何根据反向外键相关模型的字段过滤 QuerySet?

Django ORM 查询优化问题

在 settings.py 中指定 Django 测试数据库名称

初始填充 Django 表单

django-rest-framework 如何使模型序列化器字段成为必需

更好的 ArrayField 管理小部件?

Django 基于角色的视图?

删除所有表的django命令是什么?

如何在 Django 中返回静态 HTML 文件作为响应?

在 Django 中提供大文件(高负载)

ImportError:升级到 Django 4.0 后无法从 'django.conf.urls' 导入名称 'url'

Django表单集:首先需要?

Django admin:使字段在添加中可编辑但不可编辑