2018年9月26日Django的安裝以及建立第一個Django專案和子模組
python字串物件的find()和index()方法的區別?
index()和find()函式都是用於查詢字串,但是index()在沒有找到子串的時候會有報錯丟擲異常,影響程式執行。find()在找不到目標子串時不會丟擲異常,而是會返回-1,因此不會影響程式的執行。
函式的引入(繫結)不需要加括號,函式的呼叫需要加括號, 用於urls檔案中路徑繫結指定的函式
從今天開始,用django做web開發要轉換立場,我現在開發的是伺服器,要時刻以伺服器的身份提醒自己。
1海里(nmi) = 1.852千米
如果想要實現某一個功能,可以在網上查詢想要實現的功能的介面API: 比如說想要查詢電話號碼的歸屬地:在網上查: 電話歸屬地查詢API 淘寶 ,得到結果:
http://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel=15850781443
這是get的請求方式,?後邊就是傳遞的引數,可以修改引數查詢自己想要查詢的號碼的歸屬地。實現其他功能也是一樣的,可以查詢API介面。
python web框架有:
Django,flask,tornado,web.py………
為什麼Django應用的最為廣泛:
1、有完善的ORM關係對映
2、有強大的路由對映功能
3、有完善的檢視模板的實現
4、有健全的後臺管理系統
5、有強大的快取支援
……
企業級web開發,Java還是是王道,PHP比java開發的效率快,python的開發效率最高,,從執行速度,運維的成本,高可擴充套件性來說,還是java更加的優秀。
模組和框架的區別?
模組:為了完成某一件事,或者某些事,而封裝的程式碼,提供了一些封裝好的方法和屬性
框架:提供方法屬性的同時,也提供處理事務的業務邏輯,擴充套件了程式碼
cms(content manager system)內容管理系統, Django就是一個內容管理系統, Django的歷史:勞倫斯集團的下屬子公司===新聞出版社想要開發一個內容管理系統,實時地釋出新聞搶佔市場,於是讓公司開發團隊開發一個內容管理系統,正好當時這個開發團隊中大部分都是Python高手,所以就用Python開發了,所有就有了django的出現。
用django做web開發的時候最好建立一個虛擬環境,方便將來的專案部署的時候可以在這個虛擬環境中一鍵匯出該專案需要的模組,如果用全域性環境的話會存在很多的模組,篩選出該專案需要的模組的話會比較麻煩,建立虛擬環境頁面下面兩個複選框不要勾選,勾選的話會把所有的包拷過去
建立完虛擬環境之後第一件事是下載django: 命令是 pip install django==1.11, 如果不限制版本號的話會預設下載最新的版本2.0,但是公司開發並不使用最新的版本,1.11是長期支援的版本。如果安裝錯版本了就把django解除安裝了重新安裝,命令式: pip uninstall django
django只是虛擬環境中的一個模組,與虛擬環境沒有什麼關係
檢視django版本命令是: 1.django-admin --version
2. 進入Python: import django
django.get_version()
如果返回安裝Django的版本號,則認為成功安裝!!!!
建立第一個django專案的命令是terminal: django-admin startproject mysite(專案名稱)
django專案一般都是用於管理整個專案,一般不在專案中做程式碼開發,實現功能的話需要自定義模組
建立給自定義模組的命令是terminal: django-admin startapp blog(模組名稱)
啟動Django專案的命令是terminal: python manage.py runserver
建立一個自定義的子模組步驟:
1.命令 terminal cd到專案名稱下面,django-admin startapp 功能模組名稱
2. 定義功能模組中的urls和views模組內容, 並將自定義模組和模組中的urls註冊到根模組中,將自定義的模組註冊到跟模組中的setting配置檔案中的INSTALLED_APPS列表中,
將urls路由註冊到跟模組中的urls檔案中,要先從django中引入include, 然後在一級路由中配置一個二級路由
在自定義的模組中完成urls和views的對映
第一個django專案建立成功後,專案結構如下:
|-- mysite # 表示專案名稱
|-- mysite # 根模組,根模組跟專案名稱保持一致
|-- __init__.py # 模組描述檔案
|-- settings.py # 專案的配置檔案
|-- urls.py # 根路由模組
|-- wsgi.py # django實現wsgi
|-- manage.py # 該檔案是專案的命令檔案,不需要我們修改
啟動Django專案:
cd 專案主目錄中來
python manage.py runserver
PS:
python manage.py runserver [port]
python manage.py runserver [ip:port]
注意:如果想使用ip來訪問專案,那麼首先應該在配置檔案(settings.py)中配置ALLOWHOSTS=["*"]
怎麼修改django的語言包:
4、settings.py
LANGUAGE_CODE = 'zh-Hans'
這是簡體中文。
在Django中建立一個子模組(功能模組)專案結構如下:
cd 專案主目錄
django-admin startapp <子模組名稱>
|-- mysite # 專案名稱
|-- mysite # 根模組
|-- __init__.py # 模組描述檔案
|-- settings.py # 專案的配置
|-- wsgi.py # 實現了wsgi web閘道器介面
|-- blog # 子模組
|-- migrations # 同步資料的遷移檔案的資料夾
|-- __init__.py # 模組描述檔案
|-- admin.py # 後臺管理系統用來管理子模組中的模型類的檔案
|-- views.py # 子模組的檢視檔案
|-- urls.py # 需要我們建立,子模組的路由檔案
|-- models.py # 定義模型類
|-- tests.py # 測試檔案
|-- apps.py # 定義子模組專案項的檔案
|-- manage.py # 專案的命令檔案
當子模組建立完成後,要求必須執行兩項操作(重點)
1、在根模組的settings.py配置檔案中INSTALLED_APPS=["子模組名稱"]
2、建立子路由,之後交給根路由來管理
子模組中的urls和views都需要引入djnago中相應的模組:
urls:
from django.conf.urls import url from . import views
views:
from django.http import HttpResponse
web軟體的處理流程(軟體的架構)
在傳統的web軟體,流行MVC的處理流程
M(model) 模型 定義:類、以及跟資料庫相關的程式碼
V(view) 檢視 也就是頁面
C(controller) 控制器 功能:接受引數,分發請求
這種軟體架構的目的是為了解耦合~~~~
提高程式碼的健壯性、可擴充套件性和維護性
分層管理的主要目的是實現:高內聚,低耦合
Django認為MVC這種傳統的軟體處理流程顯得有點冗餘,對MVC進行升級,得到了它的處理流程(軟體架構)--MVT
M(model) 模型層
V(view) 檢視層
T(templates) 模板層
原本的控制器中分發請求的功能,交給了路由
原本的控制器中接受引數的功能,交給了檢視
一級訪問目錄後邊不要加$符號
get方式請求的時候一般都會在最後一級訪問物件後邊自動加上 /, 而其他請求方式不會自動加/,所以在urls中定義最後一級路由的時候要在正則表示式的最後加上/結尾