cczhy

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
在主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<a1>(\d+)',views.index,name='n1')
reverse('n1',kwargs={'a1':1111}),这样表示/index/1111。

2、根据url名称,在模板中使用
<form method="POST" action="{% url "n1" %}>
那么就会将表单发送到n1命名的url。
3、
url(r'^edit/(\w+)/',views.edit,name='n2')
在模板中:
<a href="{% url "n2" i %}">编辑</a>
这样就会生成这样的url:<a href="edit/i">编辑</a>
这样就实现了根据名称自动生成url。自己不用写url了。
4、如果对url总访问权限,可以使用url的名称对url进行定义。只有Django中有url名称,其他框架没有这种名称。

路由系统必须会:
路由分发,include里面加的是app01.urls。
路由其实是正则表达式。学会用终止符。
伪静态,url以.html结尾即可。
url名称在Python代码中使用reverse,在hmtl模板中使用{% url "n1" %}
url名称仅在Django中支持。

 

posted on 2021-08-09 15:29  cczhy  阅读(23)  评论(0)    收藏  举报