Django url路由分配
在项目文件中,urls.py文件目的是匹配用户请求的url来执行对应的函数,格式如下:
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):。
第二个参数:
匹配到之后需要执行的函数,固定格式。
第三个参数:
用处不大,详见http://www.cnblogs.com/yuanchenqi/articles/6083427.html。
第四个参数:
别名。顾名思义,在前端使用form表单验证时,需要两个参数,action和method,其中action是表单数据提交到的路径是哪里,一般情况下action="/index/",但是此情况有弊端,缺少解耦,后端修改后前端也需要修改,所以别名用处就在于此。固定格式为:name="home",前端格式为:action={% url "home" %}。如果action="",默认将POST提交的数据给当前路径。
app路由应用
项目较大时,可能有许多路由映射,不符合解耦规范,此时,在每个app中创建urls.py,在全局urls.py 配置一下即可,如下:
项目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