Django基礎篇之簡介和項目創建

来源:https://www.cnblogs.com/xiaodou-cao/archive/2020/04/14/12500117.html
-Advertisement-
Play Games

Python安裝 想要使用Django,前提是要安裝好Python軟體及運行環境,因為Django是基於Python寫的。具體Python安裝過程詳見: "Python3 環境搭建" 查看安裝的Python版本 shell $python m pip install django i https:/ ...


Python安裝

想要使用Django,前提是要安裝好Python軟體及運行環境,因為Django是基於Python寫的。具體Python安裝過程詳見:Python3 環境搭建

查看安裝的Python版本

$python -V
Python 3.7.6

python -m 參數釋義(將庫中的python模塊用作腳本去運行),以下是摘要網上資料,詳見:Python 中 -m 的典型用法、原理解析與發展演變

還有一種常常被人忽略的場景:“python -m pip install 包名”。我們可能會習慣性地使用“pip install 包名”,或者做了版本區分時用“pip3 install 包名”,總之不在前面用“python -m”做指定。但這種寫法可能會出問題。

很巧合的是,在本月初(2019.11.01),Python 的核心開發者、第一屆指導委員會 五人成員之一的 Brett Cannon 專門寫了一篇博客《 Why you should use "python -m pip" 》,提出應該使用“python -m pip”的方式,並做了詳細的解釋。

他的主要觀點是:在存在多個 Python 版本的環境中,這種寫法可以精確地控制三方庫的安裝位置。例如用“python3.8 -m pip”,可以明確指定給 3.8 版本安裝,而不會混淆成其它的版本。

pip包管理工具

pip 是一個現代的,通用的 Python 包管理工具。提供了對 Python 包的查找、下載、安裝、卸載的功能。

在安裝Python的時候,如果勾選了安裝pip的話,程式會自動把pip工具安裝上,如果在安裝Python的時候沒有勾選安裝pip,則需要手動安裝pip工具,安裝過程詳見:Python pip 安裝與使用

easy_install、pip以及pip3的區別

easy_install是python2下很早版本的包管理工具,pip是python2下的easy_install改進版,而pip3是針對python3下的包管理工具,如果電腦上只安裝了python3,則pip和pip3工具沒有區別。

查看已經安裝的pip版本

$python -m pip -V
pip 19.2.3 from D:\Program\Python37\lib\site-packages\pip (python 3.7)

安裝第三方包

$python -m pip install package_name # 預設安裝最新的包
$python -m pip install package_name==version # 安裝指定version版本的包
$python -m pip install package_name -i 包的源地址 # 通過-i指定包下載的源

查看某個已安裝包

$python -m pip show --files package_name

檢查哪些包需要更新

$python -m pip list --outdated
Package               Version    Latest     Type
--------------------- ---------- ---------- -----
asgiref               3.2.3      3.2.7      wheel
certifi               2019.11.28 2020.4.5.1 wheel
pip                   19.3.1     20.0.2     wheel
setuptools            41.2.0     46.1.3     wheel

升級第三方包

$python -m pip install --upgrade package_name

卸載第三方包

$python -m pip uninstall package_name

升級pip工具

$python -m pip install --upgrade pip

什麼是Django

Django是一個由Python編寫的具有完整架站能力的開源Web框架。使用Django,只要很少的代碼,Python的程式開發人員就可以輕鬆地完成一個正式網站所需要的大部分內容,併進一步開發出全功能的Web服務。

MVC框架和MTV框架

做過web開發的同學,尤其是java語言web的開發,對MVC框架設計應該不是陌生的, 這也是架構模式中的一種,通過三個不同的層面結構進行設計,即M表示Model(模型)層,V表示View(視圖)層,C表示Control(控制)層,如下圖所示:

而Django作為web開發的構架,也有自己的構架設計模式,Django框架的設計模式借鑒了MVC框架的思想,也是分成三部分,不同之處在於它設計的三部分為:Model(模型)層、Template(模板)層和View(視圖)層,也就是MTV框架,如下圖所示:

  • Model(模型):負責業務對象與資料庫的對象(ORM)

  • Template(模板):負責如何把頁面展示給用戶

  • View(視圖):負責業務邏輯,併在適當的時候調用Model和Template

此外,Django還有一個urls分發器,它的作用是將一個個URL的頁面請求分發給不同的View處理,View再調用相應的Model和Template

其實Django是一個非常豐富的web構架,集成了很多的內容和組件,基本上可以包含你要開發所涉及到的所有內容,更多詳情請自行閱讀: Django官網文檔

好了,知道了Django基本內容後,是不是躍躍欲試了呢,那咱就開始Django環境的安裝及項目的創建吧。

Django環境安裝

在通過本文一開始的內容,假設現在你已經熟悉並安裝好了Python環境及pip工具,如果你還沒有搞定以上的環境,請自行百度配置好所需要的環境,以下會通過兩種方式介紹怎樣創建一個Django項目應用,Come on!!!

在創建項目應用之前,咱必須先安裝django程式,通過pip工具進行安裝,這裡選擇的是2.2版本,如下所示:

$python -m pip install django==2.2.12 -i https://pypi.douban.com/simple # 下載指定版本

如果不想指定版本,可以直接使用以下命令下載最新的版本,如下所示:

$python -m pip install django -i https://pypi.douban.com/simple # 下載目前最新的版本

如果你還不想指定源也是可以的,但要承受安裝過程受網路影響所帶來的等待時間,尤其是安裝比較大的程式,命令如下所示:

$python -m pip install django # 從官網上下載目前最新的版本

提示:這裡為什麼選擇安裝2.2的版本,而不選擇目前最新的3.0版本,因為django每個版本都會有對應的支持周期,而我們也不想在實際項目中因為django版本影響帶來更多的維護或升級,所以就選擇了目前的LTS(long-term support)版本,更多版本信息請參閱:Django官網下載

在安裝成功後,在python程式目錄中會多出來django-admin命令/程式,也就是咱們後面要用來創建項目應用的命令,如下所示:

創建項目之命令行操作

創建項目

首先選擇一個自己比較喜歡的文件夾存放創建的項目應用,比如我這裡選擇E:\works目錄,打開cmd工具,切換到工作目錄中,如圖所示:

在工作目錄中,輸入以下命令即可創建一個django目錄,假如你的項目名稱是:myproject

$django-admin startproject myproject # 創建一個名稱為myproject的項目

操作完成後,沒有任何提示內容,所謂沒有信息就是最好的結果,這時咱們再通過tree -F命令顯示工作目錄的結構,如圖所示:

通過以上操作,咱就完成了一個沒有任何內容和功能的項目的創建,那怎麼來運行這個項目呢,不急,往下看。

啟動項目

在cmd命令提示界面下,切換到項目所在的根目錄,輸入以下命令即可運行項目,如下圖所示:

$cd myproject
$python manage.py runserver # 啟動服務,監聽預設地址和埠

提示:這裡要記住manage.py管理命令是位於項目的根目錄中,如果在創建項目後沒有切換進項目目錄,就會出現這樣的錯誤信息:python: can't open file 'manage.py': [Errno 2] No such file or directory

在啟動項目之後,我們打開瀏覽器輸入以上的服務地址和埠, 就能看到django預設的項目界面,是不是很開心O(∩_∩)O~~

那有同學可能會問了,我們可不可以使用別的埠,比如習慣用8080埠了,答案是肯定的,在啟動項目的時候指定下埠即可,如下所示:

$python manage.py runserver 8080 # 啟動服務,監聽8080埠

當然最終我們的項目應用是要被別人能夠訪問的,總不能只能通過自己的本機客戶端來訪問對吧,這個時候在啟動項目的時候修改指定服務所在主機即可的,如下所示:

$python manage.py runserver 0.0.0.0:8080 # 啟動服務,監聽當前主機的地址和8080埠

再分別打開瀏覽器訪問地址看看效果,這裡就不演示了,O(∩_∩)O哈哈~

創建APP

項目和APP的關係

project相當於學校,app相當於學校的學院
也就是說,project可以包含多個app

為什麼要用APP

方便在一個大的Django項目中,管理實現不同的業務功能,從開發上也可以分離,一個同事負責一個app業務功能的開發

好了,說了這麼多,那到底怎麼創建app呢,其實也很簡單的,還記得怎麼啟動項目嗎,再打開cmd命令提示界面切換到項目根目錄,比如我們要創建一個登錄相關功能的app,名稱為:login,則輸入以下命令:

$python manage.py startapp login # 創建一個名為login的app應用

從上圖中可以看出在項目根目錄下,多了一個login的子目錄及相關的py文件,這裡麵包含了框架中的Model和View層,這時候如果再次啟動項目,你會發現沒什麼不一樣,因為我們沒有添加任何的應用相關的功能,後續會有詳細的介紹。

註冊APP

要想正常使用app,必須在settings.py文件中進行app應用的註冊,配置如下:

INSTALLED_APPS = [
    ...
    'login.apps.LoginConfig' # 新創建名稱為login的APP應用,推薦寫法
]

創建項目之工具操作

通過以上的操作,咱們已經熟悉了怎樣創建django項目並啟動,但這些操作都是比較簡易的,如果後續進行開發,也這樣通過命令和編輯相關文件添加內容,就顯的很麻煩了,這時就需要找一個比較好的集成開發工具,這裡選擇的是:PyCharm,下麵就看看如何在PyCharm中來創建項目和啟動服務,Go on!!!

這裡假設你已經正確安裝好了PyCharm工具,如果還沒安裝配置好,同樣請自行百度進行補課了。。。

創建項目

打開運行PyCharm工具,如果是首次打開的話會提示你是要創建項目還是打開現有的項目,咱們就選擇創建新項目好了,如圖所示:

在打開的新建項目界面,按要求輸入項目名稱,比如:myproject,存放目錄還是E:\works,這裡根據你實際的情況填寫即可,同時這裡選擇通過現有的解釋器,這裡暫不使用虛擬環境,如果你想瞭解虛擬環境及使用的話,可以點擊閱讀:Python虛擬環境常用工具使用

再點擊展開新建項目的More Settings選項,裡面有輸入對應的模板(Template)的名稱和新建app的名稱,也就是如果你在這裡輸入了模板和app的名稱,PyCharm會自動幫你創建,如圖所示:

點擊Create按鈕,等待項目創建完成,再通過PyCharm查看創建完成的項目結構,如下圖所示:

啟動項目

通過PyCharm工具創建的項目,怎麼啟動呢,這很簡單的,點擊項目名稱邊上的綠色三角形即可,會在工具下麵多出一個視窗顯示啟動服務相關的輸出信息,如下圖所示:

這個時候再通過瀏覽器去訪問,效果和命令行創建項目的效果是一樣一樣的,如下所示:

如果我想像命令行一樣,指定不同的服務地址和埠來啟動呢,同樣也可以的,點擊項目名稱,展開菜單,點擊Edit Configurations...進行項目參數配置,在裡面可以指定IP地址和埠號,如下圖所示:

創建APP

通過以上PyCharm工具在創建項目的時候,可以同步指定創建一個app,那麼如果通過PyCharm再創建其他的app,怎麼操作呢,通過選擇Tools->Run manage.py Task...,在彈出的命令提示符下,輸入startapp rabc,其中rabc是app名稱,如下圖所示:

說白了,PyCharm創建應用,也是通過集成了底層的操作命令執行的,這時再看看最終的項目結構,會發現多了一個rabc子目錄及相關py文件,如圖所示:

註冊APP

同樣的,如果手工新創建了一個app應用,也是要在settings.py中進行註冊的,當然如果通過PyCharm進行創建的app,工具會自動註冊,如下所示:

INSTALLED_APPS = [
    ...
    'login.apps.LoginConfig', # Pycharm創建app時自動註冊的
    'rbac.apps.RbacConfig' # 手工創建的需要手工註冊添加
]

小結

總結一下以上我們學習過的知識點:

  • Django是一個web構架,採用了MTV的設計模式,M(模型)、T(模板)、V(視圖)
  • 創建Django項目命令:django-admin startproject <項目名稱>
  • 啟動Django項目命令:python manage.py runserver 服務地址-可省略 服務埠-可省略
  • 創建Django app應用命令:python manage.py startapp <app名稱>

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • A Lucky 7 題意:一個三位數,判但是否出現數字7. 題解:簽到題。 代碼: #include<iostream> #include<algorithm> #include<cstring> #include<stdio.h> using namespace std; int main(){ ...
  • ArrayList、LinkedList和Vector源碼分析 ArrayList ArrayList是一個底層使用數組來存儲對象,但不是線程安全的集合類 ArrayList的類結構關係 ArrayList實現了List介面,List介面中定義了一些對列表通過下標進行添加刪除等方法 ArrayLis ...
  • newFixedThreadPool @Slf4j public class TheadPoolDemo { private static ThreadPoolExecutor threadPool = (ThreadPoolExecutor) Executors.newFixedThreadPoo ...
  • 為了便於SEO搜索到,首先把報錯內容貼出來吧 不同版本的Oracle驅動會報不同的錯 1 <dependency> 2 <groupId>com.oracle</groupId> 3 <artifactId>ojdbc6</artifactId> 4 <version>1.0</version> 5 ...
  • 點擊藍色“程式員書單”關註我喲 加個“星標”,每天帶你讀好書! 經過了10多年的發展,Java Web從開發框架到社區都已經非常成熟,而目前市面上最流行的Java Web框架已然是Spring全家桶,從過去的Spring,SpringMVC,再到SpringBoot。而曾經流行的JSP和servle ...
  • c/c++ 學習互助QQ群:877684253 本人微信:xiaoshitou5854 ...
  • 1 import os 2 3 # 學生系統基本功能 4 # 增刪查改 5 6 # 如何實現該系統 7 # 1.顯示系統功能界面 8 # 2.讓用戶選擇功能 9 # 3.判斷用戶選擇的指定功能,然後完成相應的操作(增刪查改) 10 11 # 面向對象分析 12 # 1.抽象類 13 # 學生系統管理 ...
  • 概述 SpringMVC 是Spring框架的一部分,屬於Spring的Web模塊,主要的核心思想就是 MVC 。是目前最主流的Web框架之一。SpringMVC使用 註解 來簡化Java Web的開發,並且支持REST風格的URL請求。具有松耦合、可插拔的組件結構,比其他的MVC框架更具擴展性和靈 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...