早在文章【Django入门】——MVT模式综合演示案例中,对于下列# 1
处代码:
from django.conf.urls import url
from booktest import views
# 进行URL配置,建立URL地址和视图之间的对应关系
urlpatterns = [
# 通过url函数设置url路由配置项
url(r'^books$', views.show_books),
url(r'^books/(\d+)$', views.show_details) # 1
]
show_details()
是一个接收一个参数的视图函数,在正则r'^books/(\d+)$'
中,通过分组(关于正则中的分组等概念,请见文章Python爬虫、后端,使用正则表达式,看这一篇就够了!)匹配出的值将会在调用视图函数时自动传递给后者作为参数。这就是所谓的位置参数捕获以及传递。
有时候,可能视图函数需要接受的参数很多,直接通过位置参数的捕获以及传递出错的几率较大,此时可以采用关键字参数捕获和传递,具体的演示我们基于【Django入门】——修改Django默认提供的错误页面搭建的演示环境。
首先,定义一个视图函数echo_arg()
:
def echo_arg(request, num):
"""原样返回从url中捕获的参数"""
return HttpResponse(num)
其次,进行应用的url配置:
from django.conf.urls import url
from booktest import views
urlpatterns = [
# 通过url函数设置url路由配置项
......
url(r'^echo_arg(?P\d+)$' , views.echo_arg)
]
最后,如果启动Django自带服务器并在浏览器地址栏输入http://127.0.0.1:8000/echo_arg520
,则会在浏览器上看到520
。