02--Django项目的MTV开发模式

一、Django 处理 HTTP 请求

Web 应用的交互过程其实就是 HTTP 请求与响应的过程。
Django 作为一个 Web 框架,也能接收浏览器发来的 HTTP 请求,返回相应的 HTTP 响应。那么:

  • Django 如何接收 HTTP 请求?
  • Django 如何处理这个 HTTP 请求?
  • Django 如何生成 HTTP 响应?

对于如何处理这些问题,Django 有其一套规定的机制。我们按照 Django 的规定,就能开发出所需的功能。

Django 如何接收 HTTP 请求

Django 接收 HTTP 请求,主要通过 urls.py 这个文件将 URL 地址解析到对应的 VIEWS里面

from django.contrib import admin
from django.urls import path
from about import about_views  # new
from django.conf.urls import include  # new

urlpatterns = [
    path('admin/', admin.site.urls),
    path('abc/', include('about.urls')),  # new
    path('xyz/', about_views.index),  # new
]

这里使用了两种方式来解析 URL 地址

  1. abc 路径地址转发到 about 应用的 urls.py 模块,由 about 应用处理,地址将 abc/路径进行拼接
from django.urls import path
from . import views

urlpatterns = [
    path('123', views.index),
]

相当于解析了 http://127.0.0.1:8000/abc/123

  1. xyz 路径地址转发到 about 应用的 views.py 模块的 index 方法,由 index 处理改请求
from django.shortcuts import render

# Create your views here.
def index(request):
    return render(request,'about_me.html')

相当于解析了 http://127.0.0.1:8000/xyz

Django 如何处理这个 HTTP 请求

Django 处理 HTTP 请求,主要通过 views.py 这个文件,上面我们说过 urls.py 模块将地址转发到对应的 views.py 模块的具体方法中处理,然后方法会返回结果。

Django 如何生成 HTTP 响应

views.py 模块的具体方法中处理地址请求时,会返回结果。

二、HTML模版与静态资源

模版与资源
  1. 当我们再 render 里面返回 about_me.html 时,页面可能会报 TemplateDoesNotExist 错误,这个时候需要在setting中TEMPLATES的DIRS里面加上templates的目录
TEMPLATES = [
    {
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
    },
]

setting中 BASE_DIR 的定义,可以获取项目的绝对路径
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
os.path.abspath(__file__) 可以获得当前文件的绝对路径

  1. 当html页面正常打开,但是css文件404时,这个时候需要在setting中加上静态文件的地址
STATIC_URL = '/static/'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static')
]

三、项目配置流程

项目配置流程
  1. 上图展示了一个最简单的项目配置的流程
  2. 在图中,上面三步是在创建项目的初期完成的,完成后不需要变动
  3. 中间三步,是后台处理的核心,也是我们需要经常改动的地方
  4. 最后的Html和css则是前端需要关注和处理的地方

Django的MTV

  • Model(模型):数据库相关的操作(ORM)
  • Template(模版):模板语法--->将变量(数据库数据)如何巧妙嵌入html页面中
  • View(视图):逻辑处理
  • 另外,Django还有一个urls分发器:路径与视图函数的映射关系
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • PythonWeb框架要点、Django介绍、工程搭建、配置、静态文件与路由 1.Python Web 框架要点 ...
    Cestine阅读 5,640评论 0 6
  • 点我查看本文集的说明及目录。 本项目相关内容包括: 实现过程: CH7 创建在线商店 CH8 管理支付和订单 CH...
    学以致用123阅读 9,120评论 0 6
  • # Python 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列...
    小迈克阅读 8,145评论 1 3
  • Django的来历:python开发的! long long long years ago!劳伦斯出版集团新闻 网...
    JAguys阅读 2,844评论 0 0
  • 一、Django框架前言知识: 1、C/S和B/S的区别: C/S结构软件:客户端/服务端软件,即客户端要自己下载...
    月下独酌123阅读 10,123评论 0 36