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模版与静态资源

02--Django项目的MTV开发模式_第1张图片
模版与资源
  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')
]

三、项目配置流程

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

Django的MTV

  • Model(模型):数据库相关的操作(ORM)
  • Template(模版):模板语法--->将变量(数据库数据)如何巧妙嵌入html页面中
  • View(视图):逻辑处理
  • 另外,Django还有一个urls分发器:路径与视图函数的映射关系

你可能感兴趣的:(02--Django项目的MTV开发模式)