概念:在建立路由的时候,为路由指定标签(别名),使用的时候调用别名
反向解析在模板中使用:
在根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"), ]