天天看點

Python學習筆記:7.2.2 Django快速建站 - MTV模式

前言:本文是學習網易微專業的《python全棧工程師 - Django快速建站》課程的筆記,歡迎學習交流。同時感謝老師們的精彩傳授!

一、課程目标

  • 了解

    MTV

    模式
  • 重新設定項目的模闆目錄

二、詳情解讀

2.1.

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.請求響應流程

Python學習筆記:7.2.2 Django快速建站 - MTV模式
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

目錄中

目錄結構如下:

Python學習筆記:7.2.2 Django快速建站 - MTV模式
2.3.優化

blog

應用

優化的目标:

Python學習筆記:7.2.2 Django快速建站 - MTV模式

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

引入了

運作結果:

Python學習筆記:7.2.2 Django快速建站 - MTV模式
三、課程小結
  • 01

    MTV

    模式
  • 02.重新規劃項目目錄