Django学习笔记【设计模式、分布式路由】

110 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第3天,点击查看活动详情 本文已参与「新人创作礼」活动,一 起开启掘金创作之路。

设计模式及模板层

MTC模式

  • M模型层:负责数据库交互
  • T模板层:负责呈现内容到浏览器
  • C控制层:负责接收请求,获取数据,返回结果
  • 作用:降低模型间的耦合度

模板层

  • 模板是可以根据字典数据动态变化的网页
  • 模板层可以根据视图中传递的字典数据动态生成响应的html

模板配置

  • 创建模板文件夹<项目名>/template
  • 在settings.py中TEMPLATES配置项
    • BACKEND:指定模板的引擎
    • DIRS:模板的搜索目录(可以是一个,也可以是多个)
    • APP_DIRS:是否要在应用中的templates文件夹中搜索模板文件
    • OPTIONS:有关模板的选项
  • 配置项中,有需要修改的部分
    • 设置DIRS - 'DIRS': [os.path.join(BASE_DIR, 'templates')]

模板的加载方式

  • 方案一:通过loader获取模板,通过HttpResponse进行响应,视图函数:
    from django.templeate import loader
    # 通过loader加载模板
    t = loader.get_template('模板文件名')
    # 将t转换为html(字符串)
    html = t.render(字典数据)
    # 返回给浏览器
    return HttpResponse(html) 
    

...
...
...
这部分不写了,因为喜欢前后端分离模式,mtv跟jsp样,看着闹心


URL反向解析

暂时用不到,以后再补充


静态文件

暂时用不到,以后再补充


应用及分布式路由

创建应用

  1. 用manage.py中的子命令startapp创建应用文件夹
    • python manage.py startapp music
  2. 在settings.py的INSTALLED_APPS列表中配置安装此应用
    INSTALLED_APPS = [
      'django.contrib.admin',
      ............
      'music',
    ]
    
  • app目录结构
    • music #根目录
      • migrations #数据库迁移文件
        • __init__.py
      • __init__.py
      • admin.py #后台管理相关
      • apps.py #app配置相关
      • models.py #模型,数据库相关,写一些类
      • tests.py #测试相关
      • views.py #视图函数

分布式路由

主路由配置文件urls.py将请求交给各个app应用处理

  • 配置分布式路由
    1. 主路由配置文件urls.py中导入include()函数:from django.urls import include
    2. 主路由中调用include()函数,语法:include('app名字.url模块名')
      urlpatterns = [
         path('admin/', admin.site.urls),
         .................  
         path('music/',include('music.urls'))
      ]
      
    3. 应用下配置urls.py文件(手动创建,内容结构同主路由完全一样)
      urlpatterns = [
         path('one',views.test1)
      ]
      

应用下的模板

应用内部可以配置模板目录

  1. 应用下手动创建templates文件夹
  2. settings.py开启应用模板功能
    TEMPLATE配置项中的APP_DIRS值设置为True即可

应用下templates和外层templates都存在时,django得查找模板规则

  1. 优先查找外层的模板目录下的模板
  2. INSTALLED_APPS配置下的应用顺序逐层查找