组团学

Django视图介绍与路由

阅读 (156482)

一、概述

  • 作用

    接收web请求并返回web响应

  • 本质

    就是python函数

  • 请求

    客户端给服务端的信息

  • 响应

    服务端给客户端的信息,可以是一个网页、一个重定向、一个404错误、json数据等

  • 图解

image20200103104904884.png

二、路由(URLconf)

1、在配置文件中指定根级路由

ROOT_URLCONF = 'project.urls'

2、path()函数与re_path()函数

  • 概述

    在新版本Django2.x中,url的路由表示用path和re_path代替,模块的导入由django1.x版本的from django.conf.urls import url,include变成现在的Django2.x中的from django.urls import path, re_path, include

  • 作用

    路由匹配

  • path()

    • 参数

      route:是一个匹配URL的准则(类似正则表达式)。当Django响应一个请求时,它会从urlpatterns的第一项开始,按顺序依次匹配列表中的项,直到找到匹配的项

      view:当 Django 找到了一个匹配的准则,就会调用这个特定的视图函数,并传入一个HttpRequest对象作为第一个参数,被“捕获”的参数以关键字参数的形式传入

      name:为你的URL取名能使你在 Django 的任意地方唯一地引用它,尤其是在模板中。这个有用的特性允许你只改一个文件就能全局地修改某个URL模式(反向解析)

    • 注意

      route使用的是非正则表达式可以表示的普通路由路径

  • re_path()

    参数

    • route:使用正则表达式
    • view:使用正则表达式
    • name:使用正则表达式
  • 说明

    如果匹配的规则比较复杂建议使用re_path()

3、在根级路由中指定子路由

  • urlpatterns

    一个path对象的列表

  • path() 对象的作用

    在主路由中主要是引入其他子路由模块

  • 基本使用

    from django.urls import path, include from django.contrib import admin urlpatterns = [ path(r'admin/', admin.site.urls), path(r'', include('App.urls')), ]
  • include()函数

    • 作用:找到子路由模块

    • 参数

      • 子路由模块路径
      • 命名空间:用于反向解析
    • 带命名空间

      from django.urls import path, include from django.contrib import admin urlpatterns = [ path(r'admin/', admin.site.urls), path(r'', include(('App.urls', "App"),namespace="App")), ]
  • 多个子路由模块

    # 假设有多个应用 # http://www.sunck.wang:8000/App/index1 # 匹配 App/index1 App3/home2 # path(r'App/', include('App.urls')), # path(r'App1/', include('App1.urls')), # path(r'App2/', include('App2.urls')), # path(r'App3/', include('App3.urls')),

3、在应用目录下创建名为urls.py的文件作为子路由

  • 目录结构

    project/ App/ urls.py # 自定义urls.py文件 project/ urls.py
  • urlpatterns

    一个path对象的列表

  • path()对象的作用

    根据路由匹配不同的视图

  • 导入

    from django.urls import path, re_path

需要 登录 才可以提问哦