URL反向解析

在Django项目中,经常需要获取URL为模板也生成的内容匹配URL链接,或在服务器上地址重定向等。我们需要一种安全、可靠、自适应的机制来支持我们党URLconf中的代码被修改后,无需在项目源码中大范围的替换失效的URL硬编码。为解决此问题,可以通过path()函数的name参数,进行反向解析URL,反向URL匹配、反向URL查询或者简单的URL反差。
URL解析在不同层上,Django也提供了不同的匹配工具:

  • 模板:使用url标签。
  • python代码:使用reverse()函数(from django.urls import reverse)。
  • 模型:使用get_absolute_url()方法。

URL命名空间

URL命名空间可以保证URL反查到唯一的URL,即使不同的app中使用相同URL命名。
实现方法很简单,只需要添加类似app_name=”polls”和namespace=”author-polls”的配置。
示例:

# urls.py
from django.urls import include, path

urlpatterns = [
    path('author-polls/', include('polls.urls', namespace='author-polls')),
    path('publisher-polls/', include('polls.urls', namespace='publisher-polls')),
]


# polls/urls.py
from django.urls import path

from . import views

app_name = 'polls'
urlpatterns = [
    path('', views.IndexView.as_view(), name='index'),
    path('<int:pk>/', views.DetailView.as_view(), name='detail'),
    ...
]

如果使用命名空间定义以后,可以通过以下方法反向解析:

  • 模板:{% url 'polls: index' %}
  • python代码:reverse("polls: index")
0条评论

相关推荐

django教程

r

Django 2019-05-20 10:53:53

Celery

celery学习资料

Django 2019-05-25 18:41:55

Django-rest-framework教程

django-rest-framework教程。

Django 2019-07-18 16:33:26

django实用资料

django项目从0到1自己总结的实用的资料,大部分常用的功能这里都有

Django 2019-05-08 18:21:34