Django入門第一步:構建一個簡單的Django項目
1、簡介
Django是一個功能完備的Python Web框架,可用於構建復雜的Web應用程序。在本文中,將通過示例跳入並學習Django。您將按照以下步驟創建功能完備的Web應用程序,並一路學習框架的一些最重要的功能以及它們如何協同工作。
學習目標:
- 了解Django是什么以及為什么他是一個偉大的web框架
- 了解Django的體系結構以及與其他框架的對比
- 獨立搭建一個簡單的Django項目和應用程序(app)
2、為什么要學習Django
web開發框架有很多,單單python語言的web框架大大小小的就有十幾種,例如:Django、flask、tornado、web.py、aiohttp、sanic、vibora、bottle、falcon、weppy等。那為什么我們要優先學習Django呢?
-
首先,它是使用python編寫的,python也是對初學者友好的編程語言之一。
-
其次,它的功能范圍。如果你需要構建一個網站,使用Django,則無需依賴任何外部庫或包。這意味着您不需要學習如何使用其他任何東西,並且語法是無縫的,因為從前到后只使用一個框架。
還有一個額外的好處是,您不必擔心更新一個庫或框架會使您安裝的其他庫變得無用。如果您確實發現自己需要添加額外功能,則可以使用一系列外部庫來增強您的站點。
-
最后,就是有關Django的文檔非常的完整,有關於Django各個方面的詳細文檔,還有一些相關的實例
Django是一個具有大量功能的高級Web應用程序框架。對於任何剛接觸Web開發的人來說,由於其出色的文檔,特別是如果您也熟悉Python,這對他們來說非常棒。最關鍵的是學會Django之后再去學習其他的框架就非常輕松了。
3、Django的體系結構
一個完整的Django程序是由一個項目組成,該項目被拆分為單獨的應用程序。這個想法是每個應用程序處理站點需要執行的自包含功能。舉個例子,想象一下像Instagram這樣的應用程序。需要執行幾個不同的功能:
- 用戶管理:登錄,注銷,注冊等
- 圖像處理:上傳,編輯和顯示圖像
- 私人消息:用戶和通知之間的私人消息
這些是各自獨立的功能,所以如果這是一個Django站點,那么每個功能應該是單個Django項目中的不同Django應用程序。
Django項目還有一些適用於整個項目的配置,例如項目設置,URL,共享模板和靜態文件。每個應用程序都可以擁有自己的數據庫,並具有自己的功能來控制數據在HTML模板中向用戶顯示的方式。
每個應用程序也有自己的URL以及自己的HTML模板和靜態文件,例如JavaScript和CSS。
Django應用程序的結構使得邏輯分離。它支持模型 - 視圖 - 控制器模式,也就是我們傳統web所說的MVC架構,這是構建大多數Web框架的體系結構。基本原則是在每個應用程序中有三個單獨的文件分別處理三個主要邏輯:
- model定義數據結構。這通常是一個數據庫,是應用程序的基礎層。
- View使用HTML和CSS向用戶顯示部分或全部數據。
- Controller處理數據庫和視圖的交互方式。
但是在Django中,架構略有不同。雖然基於MVC模式,Django處理控制器部分。無需定義數據庫和視圖的交互方式。這一切都框架內部都為你!
Django使用的模式稱為模型 - 視圖 - 模板(MVT)模式。MTV模式中的視圖和模板構成MVC模式中的視圖。您需要做的就是添加一些URL配置來映射視圖,Django來幫你處理其余的東西!
4、獨立創建一個Django項目
設置開發環境
無論在什么時候開發項目,都應該先設置一個好的開發環境。先創建一個目錄,然后cd到這個目錄當中。
> mkdir newDjango
> cd newDjango
現在就可以創建一個單屬於你這個項目的虛擬環境了,但是這邊我就直接使用系統環境。
創建一個Django項目
命令行創建:
# 創建項目
> 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項目就已經完成了!!!