一、前后端不分離與前后端分離的比較
前后端不分離特點:
- 后端需控制數據的展示
- 前后端不分家,耦合嚴重
- 返回的是HTML頁面,適應性、拓展性差
- 只能用於瀏覽器,其它終端不匹配
前后端分離的特點:
- 當前主流
- 后端只對數據進行處理,只提供數據
- 前端效率、頁面好不好看,全由前端負責,前后端完全獨立
- 解耦合
- 前后端同時開發,縮小業務上線周期
- 絕大多數情況下,前端發送json格式的參數,后端同樣以json格式的數據返回
- 適應性、拓展性好
- 適合多終端運行同一套接口(PC、APP、小程序等)
二、MVT模型
mvt模型屬於Django中前后端不分離的主流開發模型,用一張圖進行描述:
在java開發中也有MVC,MVT與MVC的區別如下:
- M全拼為Model,與MVC中的M功能相同,負責和數據庫交互,進行數據處理
- V全拼為View,與MVC中的C功能相同,接收請求,進行業務處理,返回響應
- T全拼為Template,與MVC中的V功能相同,負責構造要返回的html頁面
三、模板引擎
1、創建模板目錄
直接在項目根目錄下創建templates目錄,如果是通過Django方式創建的項目會自帶該目錄,無需創建
在templates目錄下再創建一個demo.html文件
2、設置模板引擎
在全局配置模塊settings.py下找到TEMPLATES字段:
TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR, 'templates')], 'APP_DIRS': False, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ]
其中:
- 'BACKEND':指定的模板引擎,常用的模板引擎還有DjangoTemplates、Jinja2
- 'DIRS':指定html頁面或者html模板存放的路徑,可以添加多個路徑,添加的路徑使用os.path.join方法與BASE_DIR進行路徑拼接,不建議使用“+”號拼接路徑
- ‘APP_DIRS’:指定子應用下是否有html頁面,默認為True
3、創建視圖
from django.shortcuts import render def page(request): return render(request, template_name='demo.html')
- render函數主要用於渲染模板生成一個html頁面
- 第一個參數為request
- 第二個參數為在templates目錄下的文件名
- 第三個參數為context,只能傳字典,這里可以使用locals()函數,它能將當前命名空間中的所有變量信息,存放在一個字典中
4、配置路由
from django.contrib import admin from django.urls import path from projects.views import page urlpatterns = [ path('admin/', admin.site.urls), path('page/', page) ]
此時開啟服務后就可以訪問到通過模板引擎創建的頁面: