前言:本文是學習網易微專業的《python全棧工程師 - Django快速建站》課程的筆記,歡迎學習交流。同時感謝老師們的精彩傳授!
一、課程目标
- 了解
模式MTV
- 重新設定項目的模闆目錄
二、詳情解讀
2.1. MTV
模式
MTV
2.1.1.
MVC
模式
- 網站開發中,普遍遵循
模式:MVC
年1978
提出,目的是實作一種動态的程式設計,使後續結程式的修改和擴充簡化,并使程式某一部分的重複利用稱為可能。Trygve Reenskaug
M:Model
,代表資料存取層
V:View
,系統中顯示什麼和怎麼顯示
C:Controller
,根據使用者輸入和需要通路的模型
2.1.2.
MTV
模式
-
模式是以MTV
為架構的網站模式。Django
M:Model
,資料存取層
V:Template
,表現層
V:View
,業務邏輯層
2.1.3.請求響應流程
2.2.重新規劃項目結構
2.2.1.自定義模闆位置
- 目的:模闆目錄位置不在應用内部,便于統一維護模闆
- 編輯
,設定./mysite/settings.py
的值。TEMPLATES
修改
myproject/mysite/settings.py
檔案中的
TEMPLATES
:
.
.
.
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
# 新增下面這一行
'DIRS': [os.path.join(BASE_DIR, 'templates')],
# 下面這裡改為 False
'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',
],
},
},
]
.
.
.
說明:上一節課的筆記,我已經把
templates
目錄建立在項目根目錄下了,沒有這麼做的同學,應該在
myproject
目錄下建立目錄:
templates
2.2.2.靜态檔案
- 靜态檔案目錄:
/static/
- 圖檔:
/static/images/
-
CSS:/static/css
-
JS:/static/js
實操:
Step1
:從官網中下載下傳生産環境的 bootstrap:https://v3.bootcss.com/getting-started/#download,并解壓縮。
Step2
:将解壓後的
css、js、font
三個檔案夾拷貝到項目根目錄下的
static
目錄中
目錄結構如下:
2.3.優化 blog
應用
blog
優化的目标:
2.3.1.基礎模闆
-
/templates/header.html
-
/templates/footer.html
-
/templates/base.html
實操:
Step1
:分别建立模版檔案 ,
myproject/templates/base.html
、
myproject/templates/footer.html
和
myproject/templates/base.html
。
header.html
:
{% load staticfiles %}
<div class="container">
<nav class="navbar navbar-default" navigation>
<div class="navbar-header">
<img src="{% static './images/logo.png' %}" alt="" width="100">
</div>
<div>
<ul class="nav navbar-nav">
<li><a href="{% url 'blog:blog_title' %}">BLOG</a></li>
</ul>
<ul class="nav navbar-nav navbar-right">
<li><a href="#">登入</a></li>
</ul>
</div>
</nav>
</div>
說明:
1).
{% load staticfiles %}
表示要加載靜态檔案
2).
{% static './images/logo.png' %}
表示加載本地
static/images
目錄下的
logo.png
圖檔檔案。
3).
{% url 'blog: blog_title' %}
表示加載
blog
應用下
name=blog_title
的路由,這種模版标簽的使用,項目遷移時友善維護管理。要使這個模闆标簽生效,得做如下兩個更改:
myproject/mysite/urls.py
檔案更改為:
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('blog/', include('blog.urls', namespace='blog')), # 後面添加了 namespace 參數
]
myproject/blog/urls.py
檔案更改為:
from django.urls import path
from . import views
# 新增 下面這行
app_name = 'blog'
urlpatterns = [
# 路由新增 name 參數
path('', views.blog_title, name='blog_title'),
path('<int:article_id>/', views.blog_article, name='blog_article')
]
Step2
:建立檔案`myproject/templates/footer.html,寫入以下代碼:
<div class="container">
<hr>
<p class="text-center">網易微專業:Python全棧工程師</p>
</div>
Step3
:替換
base.html
檔案為以下内容:
{% load staticfiles %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{% block title %}{% endblock %}</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="{% static 'css/bootstrap.css' %}">
</head>
<body>
{% include 'header.html' %}
<div class="container">
{% block content %}{% endblock %}
</div>
{% include 'footer.html' %}
{% block javascript %}{% endblock %}
</body>
</html>
說明:
base.html
将
header.html
和
footer.html
引入了
運作結果:
三、課程小結
- 01
模式MTV
- 02.重新規劃項目目錄