概念:在建立路由的时候,为路由指定标签(别名),使用的时候调用别名
反向解析在模板中使用:
在根urls注册模块urls上使用 namespace(命名空间)
urlpatterns = [
path('admin/', admin.site.urls),
url(r'^sunck/',include("myApp.urls",namespace="app"))
]
在app的urls模块上使用 name(需要跳转的页面)
urlpatterns = [
url(r'^good/$',views.good,name="good"),
]
在html中使用{% url “namespace:name” %}
示例html文件:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>学生信息</title>
</head>
<body>
<h1>学生列表</h1>
<a href="/sunck/good/">链接</a> {#硬链接#}
<a href="{% url 'app:good' %}">链接</a> {#反向解析#}
</body>
</html>
在这些之后,如果马上运行会遇到错误,错误为:Specifying a namespace in include() without providing an app_name
解决方案:中文链接 stackoverflow链接
在app目录下的urls.py文件中声明:
app_name='[app_name]'
[app_name]就是应用的名字
在反向解析中添加数字,view中接收值
在urls.py中
urlpatterns = [
url(r'^good/(\d+)$',views.good,name="good"),
]
往views里面传入值id
def good(request,id):
return render(request,'myApp/good.html',{'num':id})
反向解析定义值用法(可用于数页数):
<a href="{% url 'app:good' 1 %}">链接</a> {#数值设置在后面#}
1为传入的值
若传入两个参数:
<a href="{% url 'app:good' 1 2 %}">链接</a> {#数值设置在后面#}
则url为
urlpatterns = [
url(r'^good/(\d+)(\d+)$',views.good,name="good"),
]