Django的路由系统


在主urls.py中,规定路由系统:
url(r'^app01/',include('app01.urls'))则规定了app01开头的路径,继续到app01目录下的urls.py中进行匹配。
若app01目录下的urls.py有这样的路由:
url(r'^index.html$', views.index)
则可以匹配 /app01/index.html的URL

没有匹配成功的url,可以匹配一个默认页面。可以在urls.py最后写一个默认:
def default(requests):
    return HttpResponse("哥们,走错了。。。")

url(r'^',default)

也可以转到主页:
url(r'^',views.index)

给url关系命名:
url(r'^index/',views.index,name='n1')

1、可以根据名称反向生成url
from django.urls import reverse
reverse('n1')则表示/index/,也即签名定义的url。这样用于根据名字反生成url。
同样的:
url(r'^index/(\d+)',views.index,name='n1')
reverse('n1',args=(451,)),这样表示的是/index/451/,也即可以定义url。

又比如:
url(r'^index/?P(\d+)',views.index,name='n1')
reverse('n1',kwargs={'a1':1111}),这样表示/index/1111。

2、根据url名称,在模板中使用
那么就会将表单发送到n1命名的url。 3、 url(r'^edit/(\w+)/',views.edit,name='n2') 在模板中: 编辑 这样就会生成这样的url:编辑 这样就实现了根据名称自动生成url。自己不用写url了。 4、如果对url总访问权限,可以使用url的名称对url进行定义。只有Django中有url名称,其他框架没有这种名称。 路由系统必须会: 路由分发,include里面加的是app01.urls。 路由其实是正则表达式。学会用终止符。 伪静态,url以.html结尾即可。 url名称在Python代码中使用reverse,在hmtl模板中使用{% url "n1" %} url名称仅在Django中支持。