from django.urls import path,include
from BookStore import views
urlpatterns = [path('index/',include('index.urls'))]
从主路由的 urls.py 中使用 include 函数将其关联到 index 应用的路由模块。通过 name 参数,可以反向解析 URL、反向 URL 匹配、反向 URL 查询或者简单的 URL 反查。
app_name='index' #写在开始位置即可
test/ 添加相应的 name 参数,如下所示:
from django.urls import path
from index import views
app_name='index'
urlpatterns=[
path('test/',views.index_html,name='detail_hello'),
....]
然后在 index/templates 目录下新建 newtest.html 并编写如下代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<a href=" {% url 'index:detail_hello' %}">点击继续</a>
<p>一起去C语言中文嗨翻天。</p>
</body>
</html>
最后在 index\views.py 编写视图函数并配置相应路由映射,如下所示:
#视图函数
def redict_url(request):
return render(request,'index/newtest.html')
#路由映射
urlpatterns=[path('redict/',views.redict_url),
...]
最终通过访问 http://127.0.0.1:8000/index/redict/ 可以实现反向解析页面跳转。
#reverse函数实现反向解析重定向到我们想要的有页面
def test_to_reverse(request):
return HttpResponseRedirect(reverse('index:detail_hello'))
#在index/urls.py中为视图函数配置路由
urlpatterns=[
path('test/',views.index_html,name='detail_hello'),
path('reverse/',views.test_to_reverse)]
在分发式路由中使用 index:detail_hello 也就是“应用名:url 别名”,如果不是分发式路由可以直接使用 url 别名,即 reverse('detail_hello')
最后访问 http://127.0.0.1:8000/index/reverse/ 可以直接重定向到 http://127.0.0.1:8000/index/test/。reverse(viewname,urlconf=None,args=None,kwargs=None,current_app=None)
它只有一个必填参数,其他都是可选参数。其中 viewname 参数除了可以接受 url 路由 name 的别名以外,还可以接受可调用视图函数对象作为参数。示例如下:
from BookStore import views
def test_to_reverse(request):
return HttpResponseRedirect(reverse(views.test_url))
其他参数说明如下:
urlpatterns = [
path('index/',include('index.urls',namespace='first'))
]
在 index 应用的 urls.py 中添加(若之前已经添加则无需再重新添加)如下所示:app_name="index"
最后改写 index 应用的 test_to_reverse()视图函数,如下所示:
def test_to_reverse(request):
return HttpResponseRedirect(reverse
('index:detail_hello',current_app=request.resolver_match.namespace))
经过上面的设置我们就完成了 index 应用的命名空间操作,这样即使是不同的应用存在相同 url 名称,Django 也能精准的解析我们想要的 url 路径。
版权说明:Copyright © 广州松河信息科技有限公司 2005-2025 版权所有 粤ICP备16019765号
广州松河信息科技有限公司 版权所有