天天看點

【實驗樓】Django概覽

接下來我們從執行個體入手,一步一步解析Django建立網站的過程,我們分3個Python檔案(

models.py

urls.py

views.py

) 和HTML模闆檔案(

template.html

)來講解。

2.1 設計模型Model

Django無需資料庫就可以使用,通過對象關系映射器(Object-relational mapping),僅使用Python代碼就可以描述資料結構。

# myProject/myApp/models.py
from django.db import models
class book(models.Model):
    name = models.CharField(max_length=100)
    pub_date = models.DateField()
           

models.py

 檔案主要用一個 Python 類來描述資料表。 稱為 模型(model) 。 運用這個類,你可以通過簡單的 Python 代碼來建立、檢索、更新、删除 資料庫中的記錄而無需寫一條又一條的SQL語句。 在這裡我們建立了一個book模型,并定義了name和pub_date屬性。

2.2 設計視圖Views

在模型被定義之後,我們便可以在視圖中引用模型。通常,視圖根據參數檢索資料,加載一個模闆,并使用檢索到的資料呈現模闆。

# myProject/myApp/views.py
from django.shortcuts import render
from .models import Person

def book_archive(request, year):
    book_list = Person.objects.filter(birth_year = year)
    context = {'year': year, 'book_list': book_list}
    return render(request, 'books/year_archive.html', context)

           

views.py

 檔案包含了頁面的業務邏輯。 book_archive()函數叫做視圖。 這裡還用到了

year_archive.html

模闆。

2.3 設計連結Urls

優雅簡潔的URL解析式是衡量高品質網站的重要标準。Django鼓勵使用漂亮的URL設計。 使用這些優美的URL,隻需要建立URL和Python回調函數簡單的映射關系。

# myProject/myApp/urls.py
from django.urls import path
from . import views

urlpatterns = [
    path('books/<int:year>', views.year_archive),
]

           

urls.py

 指出了什麼樣的 URL 調用什麼視圖。 在這個例子中 

books/xxxxx

 将會調用 

year_archive()

 這個函數。也就是說,在進入這個連結時,會傳回視圖函數的結果。

2.4 設計模闆Templates

Django擁有強大的模闆功能,使用該模闆能設計出強大的Web頁面。

# /template/year_archive.html
{% block title %}Books for {{ year }}{% endblock %}

{{% block content %}}
<h1>Articles for {{years}}</h1>

{% for book in book_list %}
    <p>{{ book.name }}</p>
    <p>Published {{ book.pub_date|date:"F j, Y" }}</P>
{% endfor %}
{% end block %}

           

year_archive.html

 是 html 模闆。 使用帶基本邏輯聲明的模闆語言,如

{% for book in book_list %}

,它試圖将函數傳回的結果顯示在網頁上。

Django的這種結構我們稱之為MTV模式:M代表模型(Model),T代表模闆(Template),V代表視圖(View)。這三個分别代表了三種不同功能的Web應用,各司其職,又彼此合作。 大家一定聽說過MVC模式(Mode-View-Controller),MTV模式本質上與MVC相同,都是讓各元件保持低耦合的關系。 關于MTV模式我們将在後面部分詳細的講解。

以上隻是 Django 的功能性概述,後面我們将每個部分拆分開來逐一講解。

繼續閱讀