1、应用

作用:用于解耦各个功能模块的视图层

1.1、什么是应用

应用在Django项目中是一个独立的业务模块,可以包含自己的路由,视图,模板,模型;

image.png
例如一个资讯类的大站,一个资讯类可以看作是一个应用,
作用:

  1. 用于解耦视图层,避免所有资讯类频道共用一个视图层,导致版本控制不容易操作;
  2. 完全独立的业务模块:各个功能模块之间完全独立(高内聚)

1.2、创建应用

步骤1:创建应用文件夹

用 manage.py 中的子命令 startapp 创建应用文件夹

  1. python manage.py startapp 应用名字

步骤2:配置安装应用

在settings.py 配置文件中的 NSTALLED_APPS 列表中配置安装此应用

  1. INSTALLED_APPS = [
  2. 'django.contrib.admin',
  3. 'django.contrib.auth',
  4. 'django.contrib.contenttypes',
  5. 'django.contrib.sessions',
  6. 'django.contrib.messages',
  7. 'django.contrib.staticfiles',
  8. '应用名字', # 我的博客模块 (将创建好的APP加入公有配置中)
  9. ]

1.3、应用文件夹结构

migrations文件夹:

  1. - 模型层的同步迁移文件

init.py文件:

  1. - python包的初始化文件

admin.py文件:

  1. - 管理后台相关:可以让非技术人员,在后台管理页面对项目的数据进行增删改查;

apps.py文件:

  1. - 应用下的相关配置

models.py文件:

  1. - 模型层处理

tests.py文件:

  1. - 用于测试的模块

views.py文件:

  1. - 视图层 、视图函数

image.png

2、分布式路由

作用:用于解耦主路由

2.1、分布式路由介绍

分布式路由(路由分发)图例:
image.png

  • Django中,主路由配置文件(urls.py)可以不处理用户具体路由;
  • 主路由配置文件可以做请求的分发(分布式请求处理);
  • 具体的请求可以由各自的应用来进行处理(负责具体绑定路由和视图函数)

2.2、配置分布式路由

http://127.0.0.1:8000/user/test01 为请求例子,配置分布式路由,配置步骤如下:

步骤1:主路由中调用include函数

语法:

  1. include('app名字.url模块名字')

作用:
用于将当前路由转到各个应用的路由配置文件的 urlpatterns 进行分布式处理

  1. from django.contrib import admin
  2. from django.urls import path,include # 主路由里 引入了 include函数
  3. from user import views
  4. urlpatterns = [
  5. path('admin/', admin.site.urls),
  6. path('test', views.test),
  7. path('user/', include('user.urls')),
  8. # 用include()替换掉以前视图的位置即可;
  9. #path('路径/', include('app名字.url模块名字')),
  10. ]

步骤2:在应用下配置url.py文件

在应用文件夹下手动创建 urls.py 文件,内容结构同主路由完全一样

  1. from django.contrib import admin
  2. from django.urls import path
  3. from . import views
  4. urlpatterns = [
  5. path('admin/', admin.site.urls),
  6. path('test01', views.test01_view),
  7. # http://127.0.0.1:8000/user/test01
  8. ]