视图回顾
视图负责接受Web请求,进行逻辑处理,返回Web响应,并与T模块和M模块进行交互
使用步骤:
创建应用,python manage.py startapp app
注册应用,在settings.py
文件的INSTALLED_APPS
配置项中,注册应用
配置url路由,在urls.py
文件的urlpatterns
列表中,添加路由url('index', views.index)
定义视图处理函数,在views.py
中定义视图处理函数index
,def index(request):
url路由
一条URL路由包括:url规则
和视图处理函数
两部分:
- url规则:
使用字符串进行精确匹配
使用正则表达式匹配,格式为r'模式匹配串'
,
之前的
127.0.0.1:8000/app/index
,使用正则方式后修改为:
项目urls.py:url('app/', include('app.urls')),
应用urls.py:url(r'^index/$', views.index),
- 视图处理函数:
定义方式:url(url规则, '视图处理函数名')
,常用于应用中,例如:url(r'^area$', views.area),
包含方式:url(url规则, include('应用.urls'))
,常用于项目,如:url('app/', include('app.urls')),
实例演练: 增加视图app/vtest
,视图处理函数views.vtest
修改urls.py文件:添加:url(r'^vtest/$', views.vtest)
修改views.py文件:添加:def vtest(request):
从URL请求中获取数据
URL请求被看做一个普通的python字符串,匹配时不包括域名、get或post参数
例如:请求地址
http://127.0.0.1:8000/app/vtest123/?a=10
,会去除掉域名和参数部分,并将最前面的/
去除后,只将剩下的部分app/vtest123/
进行正则匹配
实例演练: 匹配app/vtest+任意数字
的URL请求
- 修改urls.py文件:
url(r'^vtest\d+/$', views.vtest),
- 修改views.py文件:
return HttpResponse('测试视图')
![](https://img.haomeiwen.com/i15420318/a1fdb108742cef54.png)
获得数据
从URL请求中获得的参数作为字符串传递给视图处理函数
在正则表达式中使用小括号来指定获得参数的部分,分为两种方式:
- 位置参数
- 关键字参数
位置参数方式:
- 修改urls.py文件:
url(r'^vtest(\d+)/$', views.vtest),
- 修改views.py文件:
def vtest(request, id):
return HttpResponse('测试视图:%s' % id)
![](https://img.haomeiwen.com/i15420318/f7347d2c70829641.png)
关键字参数方式:
- 修改urls.py文件:
url(r'^vtest(?P<id1>\d+)/$', views.vtest),
- 修改views.py文件:
def vtest(request, id1):
return HttpResponse('测试视图:%s' % id1)
![](https://img.haomeiwen.com/i15420318/16668051dce6598a.png)
自定义错误页
当请求的页面资源无法找到时,会抛出404错误
![](https://img.haomeiwen.com/i15420318/8b9060275c14c742.png)
也可以自定义404错误页
- 修改
setting.py
文件的DEBUG
和ALLOWED_HOSTS
项
DEBUG = False
ALLOWED_HOSTS = ['*', ]
- 在
templates
目录中创建404.html
文件
![](https://img.haomeiwen.com/i15420318/9156c416bfdd99d4.png)
- 页面出错时显示自定义的404页面
![](https://img.haomeiwen.com/i15420318/5b900a9984d92d9c.png)
- end -
网友评论