第八章、视图详解 -- url路由

视图回顾

  • 视图负责接受Web请求,进行逻辑处理,返回Web响应,并与T模块和M模块进行交互

  • 使用步骤:
    创建应用,python manage.py startapp app
    注册应用,在settings.py文件的INSTALLED_APPS配置项中,注册应用
    配置url路由,在urls.py文件的urlpatterns列表中,添加路由url('index', views.index)
    定义视图处理函数,在views.py中定义视图处理函数indexdef 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('测试视图')

获得数据

从URL请求中获得的参数作为字符串传递给视图处理函数
在正则表达式中使用小括号来指定获得参数的部分,分为两种方式:

  • 位置参数
  • 关键字参数

位置参数方式:

  • 修改urls.py文件:url(r'^vtest(\d+)/$', views.vtest),
  • 修改views.py文件:

 

def vtest(request, id):
    return HttpResponse('测试视图:%s' % id)

关键字参数方式:

  • 修改urls.py文件:url(r'^vtest(?P<id1>\d+)/$', views.vtest),
  • 修改views.py文件:

 

def vtest(request, id1):
    return HttpResponse('测试视图:%s' % id1)

自定义错误页

当请求的页面资源无法找到时,会抛出404错误

也可以自定义404错误页

  • 修改setting.py文件的DEBUGALLOWED_HOSTS

 

DEBUG = False
ALLOWED_HOSTS = ['*', ]
  • templates目录中创建404.html文件

  • 页面出错时显示自定义的404页面

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章