Django是一個功能完備的Python Web框架,可用於構建複雜的Web應用程序。在本文中,將經過示例跳入並學習Django。您將按照如下步驟建立功能完備的Web應用程序,並一路學習框架的一些最重要的功能以及它們如何協同工做。html
學習目標:python
web開發框架有不少,單單python語言的web框架大大小小的就有十幾種,例如:Django、flask、tornado、web.py、aiohttp、sanic、vibora、bottle、falcon、weppy等。那爲何咱們要優先學習Django呢?web
首先,它是使用python編寫的,python也是對初學者友好的編程語言之一。數據庫
其次,它的功能範圍。若是你須要構建一個網站,使用Django,則無需依賴任何外部庫或包。這意味着您不須要學習如何使用其餘任何東西,而且語法是無縫的,由於從前到後只使用一個框架。django
還有一個額外的好處是,您沒必要擔憂更新一個庫或框架會使您安裝的其餘庫變得無用。若是您確實發現本身須要添加額外功能,則可使用一系列外部庫來加強您的站點。編程
最後,就是有關Django的文檔很是的完整,有關於Django各個方面的詳細文檔,還有一些相關的實例flask
Django是一個具備大量功能的高級Web應用程序框架。對於任何剛接觸Web開發的人來講,因爲其出色的文檔,特別是若是您也熟悉Python,這對他們來講很是棒。最關鍵的是學會Django以後再去學習其餘的框架就很是輕鬆了。瀏覽器
一個完整的Django程序是由一個項目組成,該項目被拆分爲單獨的應用程序。這個想法是每一個應用程序處理站點須要執行的自包含功能。舉個例子,想象一下像Instagram這樣的應用程序。須要執行幾個不一樣的功能:服務器
這些是各自獨立的功能,因此若是這是一個Django站點,那麼每一個功能應該是單個Django項目中的不一樣Django應用程序。session
Django項目還有一些適用於整個項目的配置,例如項目設置,URL,共享模板和靜態文件。每一個應用程序均可以擁有本身的數據庫,並具備本身的功能來控制數據在HTML模板中向用戶顯示的方式。
每一個應用程序也有本身的URL以及本身的HTML模板和靜態文件,例如JavaScript和CSS。
Django應用程序的結構使得邏輯分離。它支持模型 - 視圖 - 控制器模式,也就是咱們傳統web所說的MVC架構,這是構建大多數Web框架的體系結構。基本原則是在每一個應用程序中有三個單獨的文件分別處理三個主要邏輯:
可是在Django中,架構略有不一樣。雖然基於MVC模式,Django處理控制器部分。無需定義數據庫和視圖的交互方式。這一切都框架內部都爲你!
Django使用的模式稱爲模型 - 視圖 - 模板(MVT)模式。MTV模式中的視圖和模板構成MVC模式中的視圖。您須要作的就是添加一些URL配置來映射視圖,Django來幫你處理其他的東西!
不管在何時開發項目,都應該先設置一個好的開發環境。先建立一個目錄,而後cd到這個目錄當中。
> mkdir newDjango > cd newDjango
如今就能夠建立一個單屬於你這個項目的虛擬環境了,可是這邊我就直接使用系統環境。
命令行建立:
# 建立項目 > django-admin startproject first_project # 建立app > python manage.py startapp hello_world
pycharm建立:
# 項目first_django目錄中各文件做用 - __init__.py 告訴Python將目錄視爲Python包。 - settings.py 包含Django的相關配置 - url.py 路由文件 - wsgi.py 創建服務器與Django程序之間的通訊
# app中各部分文件的做用 - __init__.py 告訴Python將目錄視爲Python包。 - admin.py 包含Django管理頁面的設置。 - apps.py 包含應用程序配置的設置。 - models.py 包含Django的ORM轉換爲數據庫表的一系列類。 - tests.py 包含測試類。 - views.py 包含處理HTML模板中顯示的數據的函數和類。
在建立應用程序後,正常來講咱們須要在配置中安裝它。在first_django/settings.py
,在下面添加如下代碼行INSTALLED_APPS
:
# Application definition INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'hello_world.apps.HelloWorldConfig', ]
若是你使用的是pycharm建立項目的話,就不須要這一步驟了,由於它會自動幫你講app添加到相關配置裏面。如今咱們的項目以及相關的app都已經創建起來了,接下來就是建立一個視圖,以便與向用戶展現內容。
Django中的視圖是app目錄中的views.py
文件內的函數或類的集合。每一個函數或類處理每次訪問不一樣URL時處理的邏輯。
打開views.py會發現那裏已經導入了一個render
from django.shortcuts import render # Create your views here. def hello_world(request): return render(request,'hello_world.html',{})
在這段代碼中,已經定義了一個名爲的視圖函數hello_world()
。調用此函數時,它將呈現一個名爲的HTML文件hello_world.html
。該文件尚不存在,接下來就來建立它。
view函數接受一個參數request
。此對象是HttpRequestObject
在加載頁面時建立的對象。它包含有關請求的信息,例如方法,它能夠包含多個值,包括GET
和POST
。
如今已經建立了視圖功能,您須要建立HTML模板以顯示給用戶。在app目錄中render()
調用的目錄中查找HTML模板templates
。建立該目錄,而後建立一個hello_world.html
在其中命名的文件(因爲我是直接使用pycharm建立的項目,因此會自帶一個模版目錄(templates)):
<h1>hello world</h1>
第一種方式:
如今已經建立了一個函數來處理視圖和模板以顯示給用戶。最後一步是處理url,也就是常說的網址,以便咱們能夠訪問剛剛建立的網頁。項目中有一個調用的模塊urls.py
,須要在該模塊中包含該hello_world
應用程序的URL配置。在裏面first_django/urls.py
,添加如下內容:
from django.contrib import admin from django.urls import path from hello_world import views urlpatterns = [ path('admin/', admin.site.urls), path('hello_world', views.hello_world) ]
添加成功以後,重啓服務器並訪問127.0.0.1:8000\hello_world
,應該就可以看到新建的HTML模版:
第二種方式:
經過以上方式咱們能夠完成咱們的第一個Django項目,可是萬一你的項目當中不止一個app那要怎麼辦呢,要如何將不一樣app的路由解耦合呢?這個時候就須要用到咱們分發路由的方式了:
首先,在first_django\urls.py
中添加如下代碼:
from django.contrib import admin from django.urls import path,include urlpatterns = [ path('admin/', admin.site.urls), path('', include('hello_world.urls')), ]
固然,只是這樣還不夠,咱們還須要在相應app中建立一個獨立的urls.py
,以下:
from django.urls import path from hello_world import views urlpatterns = [ path('', views.hello_world, name='hello_world'), ]
添加完再啓動項目,在瀏覽器直接訪問127.0.0.1:8000
就直接能夠訪問了
ok,至此咱們的第一個Django項目就已經完成了!!!