Django url路由分配

在项目文件中,urls.py文件目的是匹配用户请求的url来执行对应的函数,格式以下:html

urlpatterns = [ url('admin/', admin.site.urls), url('^index/$', views.index,), url('^news/$', views.news), url('^download/$', views.download), ]

通常的分配只须要两个参数,路径和对应执行的函数,其余两个参数能够不加。前端

url()的四个参数

第一个参数:

路径字符串,使用正则匹配,常见于分页和文章页面。例:匹配4个数字   url(r'^index/[0-9]{4}/$', views.index)   当给匹配项添加()后url(r'^index/([0-9]{4})/$', views.index) ,会将该匹配项当作参数传到views对应函数中,应为def index(req, num):(参数名无限制,多个参数时按顺序传参)。也能够设置为有名参数,例:url(r'^index/(?P<name>[0-9]{4})/$', views.index)  这样的话,views函数里边的形参只能是制定的名字 def index(req, name):。django

第二个参数:

匹配到以后须要执行的函数,固定格式。后端

第三个参数:

用处不大,详见http://www.cnblogs.com/yuanchenqi/articles/6083427.htmlapp

第四个参数:

别名。顾名思义,在前端使用form表单验证时,须要两个参数,action和method,其中action是表单数据提交到的路径是哪里,通常状况下action="/index/",可是此状况有弊端,缺乏解耦,后端修改后前端也须要修改,因此别名用处就在于此。固定格式为:name="home",前端格式为:action={% url "home" %}。若是action="",默认将POST提交的数据给当前路径。函数

 app路由应用

项目较大时,可能有许多路由映射,不符合解耦规范,此时,在每一个app中建立urls.py,在全局urls.py 配置一下便可,以下:url

项目urls.py from django.contrib import adminfrom django.conf.urls import url from django.urls import include urlpatterns = [ url('admin/', admin.site.urls), url('^blog/', include('mysite.urls')), ]
app下的urls from mysite import views from django.conf.urls import url urlpatterns = [ url(r'news/$', views.index, name="home"), ]

 

 

本文参见:http://www.cnblogs.com/yuanchenqi/articles/6083427.html spa

相关文章
相关标签/搜索