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 

原文地址:https://www.cnblogs.com/linpei/p/10751477.html