django-路由命名与reverse反解析(逆向)

路由命名

在定义路由的时候可以为路由命名,方便查找特定视图的具体路径信息。

 1)使用include函数定义路由时,可以使用namespace参数定义路由的命名空间

url(r'^',include('book.urls',namespace='book'))

命名空间表示,凡是book.urls中定义的路由,均属于namespace指明的book名下。

命名空间的作用:避免不同应用中的路由使用了相同的名字发生冲突,使用命名空间区别开。

 2)定义普通路由时,可以使用name参数指明路由的名字

url(r'^booklist/$',bookList,name='index')

 

reverse反解析

使用reverse函数,可以根据路由名称,返回具体的路径

     格式:reverse(viewname, urlconf=None, args=None, kwargs=None, current_app=None)       

viewname可以是URL pattern name或可调用视图对象。

复制代码
from news import views
url(r'^archive/$', views.archive, name='news-archive')

#可以使用以下两个方法来反转URL

# using the named URL
reverse('news-archive')

# passing a callable object
# (This is discouraged because you can't reverse namespaced views this way.)

from news import views
reverse(views.archive)
复制代码

如果需要在url中加入参数可以在args中传递参数

from django.urls import reverse

def myview(request):
    return HttpResponseRedirect(reverse('arch-summary', args=[1945]))

也可以在kwagrs传参数

>>> reverse('admin:app_list', kwargs={'app_label': 'auth'})
'/admin/auth/'

注意:

  • argskwargs不能同时传递到reverse()
  • 如果不能匹配成功,reverse()会引发NoReverseMatch异常。
  • urlconf参数是包含用于反转的URL模式的URLconf模块。 默认情况下,使用当前线程的根URLconf。
posted @   EF果果  阅读(249)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
点击右上角即可分享
微信分享提示