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

2019-06-19  本文已影响0人  Roger田翔

一、Django 处理 HTTP 请求

Web 应用的交互过程其实就是 HTTP 请求与响应的过程。
Django 作为一个 Web 框架,也能接收浏览器发来的 HTTP 请求,返回相应的 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

上一篇 下一篇

猜你喜欢

热点阅读