django中正确配置url匹配找到视图:
1 在项目下的settings.py中ROOT_URLCONF = "项目名.urls“
表示 前台发来请求会先去项目下的test3/urls.py文件进行正则匹配找到应该执行的视图函数。
2 在test3/urls.py 文件中进行配置 urlpatterns
发来的请求会进入urlpatters列表顺次匹配正则表达式,匹配成功的进入url()的第二个参数指定的去向
发来请求如果是ip:端口/aaa/bbb/?a=23 类似这样的格式,到这里匹配的时候会被django拆分剩下aaa/bbb/来匹配
第一个include(admin.site.urls) 表示django的后台数据库管理页面
第一个之后,时候我们自己开发的业务中的匹配。
第二个是 发来请求如果是 127.0.0.1:8000/demo/xxx/xxx/ 到这里会剩下demo/xxx/xxx/来匹配,会和第二项匹配成功
匹配成功后会删去匹配成功的部分 剩下xxx/xxx 去url的第二个参数include("demo1.ulrs") 去匹配,
指的是去demo1应用模块下的urls.py继续正则匹配
第三个是指 任何匹配到这里的都能成功,然后转向booktest应用下的urls.py继续正则匹配
3 booktest引用下的urls.py文件设置匹配:
从上一部项目的urls.py匹配后 跳转到应用的urls.py当中,进入urlpatters依次匹配
到这里,与正则匹配成功的会去执行第二个参数指定的函数:
如果剩下的字符串是index/ 则会 去views.py当中寻找index函数
如果剩下的是add/ 则会去views.py中寻找add 函数并执行
4 views.py中视图函数
在views.py中,定义函数名称要与匹配成功的结果相一致。
匹配过来的请求会执行这个函数,完成一些业务逻辑,返回response。
发来浏览器的请求就会接收到这个response
获取值:
通过url匹配的方式,有两种方式给views视图函数传递参数:位置参数、关键字参数
1 位置参数:
直接使用小括号给正则表达式分组,通过位置参数传递给视图。
1)为了提取参数,修改上面的正则表达式如下:
url(r'^delete(d+)/$',views.show_arg),
之后在views.py文件中的show_arg函数设置参数去接收正则的分组
def show_arg(request,id):
return HttpResponse('show arg %s'%id)
2 关键字参数:
在正则表达式部分为组命名。
1)修改正则表达式如下:
其中?P部分表示为这个参数定义的名称为id,可以是其它名称,起名做到见名知意
url(r'^delete(?P<id1>d+)/$',views.show_arg),
2)修改视图show_arg如下:
注意:视图show_arg此时必须要有一个参数名为id1,否则报错。
def show_arg(request,id1):
return HttpResponse('show %s'%id1)