Python框架篇之Django(初識Django)
標簽: 數據庫 python django 程序人生 經驗分享
一、Web框架與Django本質
1、Web框架的理解
框架,特指為解決一個開放性問題而設計的具有一定約束性的支撐結構,使用框架可以幫你快速開發特定的系統。對于所有的Web應用,實際上就是一個socket服務端,用戶的瀏覽器其實就是一個socket客戶端。
2、Django的本質
Django是一個開放源代碼的Web應用框架,由Python寫成。采用了MTV的框架模式,即模型M,視圖V和模版T。簡單來說,就是Django給我們提供了一個非常完善的Web框架,我們只需要對其中的文件進行修改與增加內容,就能輕松實現請求與響應的基本功能,最終渲染出對應的網頁。
3、MVC模式
MVC就是把web應用分為模型(M),控制器,視圖(V)三層;他們之間以一種插件似的,松耦合的方式連接在一起。模型負責業務對象與數據庫的對象(ORM),視圖負責與用戶的交互(頁面),控制器接受用戶的輸入調用模型和視圖完成用戶的請求。
4、MTV模式
MTV模式本質上與MVC模式沒有什么差別,也是各組件之間為了保持松耦合關系,只是定義上有些許不同:
- Model(模型):負責業務對象與數據庫的對象(ORM)
- Template(模版):負責如何把頁面展示給用戶
- View(視圖):負責業務邏輯,并在適當的時候調用Model和Template
另外還有一個路由分發器,即url分發器,它能將一個個URL的頁面請求分發給不同的view處理,view再調用相應的Model和Template。
5、Django的框架
圖片引自:老男孩python運維開發資料
二、從安裝到實現一個完整的Django項目
1、Django的安裝
在cmd命令行窗口中,進入Python的安裝目錄,再進入目錄Scripts,然后的輸入pip install django
2、創建一個Django項目
依然是在命令行窗口中,先cd進入你需要創建項目的目錄中或者Django的bin目錄中,再輸入django-admin startproject 項目名
,就可以創建一個Django項目了
創建完一個項目之后,相當于有了一個框架,但是我還需要創建一個應用或者多個,每一個應用就是一個功能,比如QQ有聊天功能,還有瀏覽空間的功能。manage.py startapp 項目名
,比如我輸入
manage.py startapp blog
- manage.py文件:就是整個項目的執行文件
在我們創建的這個blog應用里面,有其中幾個重要文件對應的功能是:
另外,mysite目錄是一個全局作用的,在里面有
- urls.py文件:路由分發功能的實現
- settings.py文件:存放于該Django項目相關的所有配置信息
在settings.py里面我們需要將自定義的應用也添加進去:
3、在pycharm中創建Django項目
在pycharm中創建完一個項目之后,假如我們要實現一個進入自定義的一個網址,服務端就會返回一個準確的時間。首先我們在urls.py文件里添加上這個路徑并綁定應用函數:
然后我們在創建的應用文件夾里的views.py文件里寫上我們的顯示時間的函數:
然后我們需要導入views.py文件,才能調用那個顯示時間的應用函數:
4、返回一個時間
templates:用來存放頁面(html文件)的目錄
返回頁面需要帶上形參:
return render(req,"index.html")
在html文件中兩個大括號渲染的變量,在python中定義同名的變量,然后可以用locals()直接引用:
# html文件中
<h2>Now:{{ t }}</h2>
# python文件中
t=time.ctime()
return render(req,"index.html",locals())
5、啟動Django項目
runserver:啟動Django項目(在終端中輸入)
然后就會返回一個網址,這個就是我們訪問的主頁:
6、Django項目效果
這樣,一個最簡單卻很完整的Django項目就完成了
7、views.py代碼
from django.shortcuts import render,HttpResponse
# 還必須導入HttpResponse模塊,才可以將python定義的內容返回給前端去顯示
import time
# Create your views here.
# 這個req形參是瀏覽器發送給服務端的全部信息,服務端打包后傳入到該函數的一個對象
def show_time(req):
# return HttpResponse("Welcome to my blog!")
t=time.ctime()
return render(req,"index.html",locals())
可以看到在整個網頁的形成與渲染過程中,應用函數show_time僅僅只用了3行代碼就實現了,可以說Django是非常得高效與便捷
智能推薦
python之web開發框架(Django)
目錄 前言 Django項目的創建 創建模塊 修改配置以及創建界面 連接數據庫 可以開始測試 前言 web的開發的開發框架現流行的框架有Django,Flask,Tornado 本次使用的開發框架為Django,使用的版本為2.2.7 最新版本可以更新pip install -U Django Django項目的創建 下載Django包命令:pip install Django 創建項目的話如果是...
freemarker + ItextRender 根據模板生成PDF文件
1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...
電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!
Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...
requests實現全自動PPT模板
http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...
猜你喜歡
Linux C系統編程-線程互斥鎖(四)
互斥鎖 互斥鎖也是屬于線程之間處理同步互斥方式,有上鎖/解鎖兩種狀態。 互斥鎖函數接口 1)初始化互斥鎖 pthread_mutex_init() man 3 pthread_mutex_init (找不到的情況下首先 sudo apt-get install glibc-doc sudo apt-get install manpages-posix-dev) 動態初始化 int pthread_...
統計學習方法 - 樸素貝葉斯
引入問題:一機器在良好狀態生產合格產品幾率是 90%,在故障狀態生產合格產品幾率是 30%,機器良好的概率是 75%。若一日第一件產品是合格品,那么此日機器良好的概率是多少。 貝葉斯模型 生成模型與判別模型 判別模型,即要判斷這個東西到底是哪一類,也就是要求y,那就用給定的x去預測。 生成模型,是要生成一個模型,那就是誰根據什么生成了模型,誰就是類別y,根據的內容就是x 以上述例子,判斷一個生產出...
styled-components —— React 中的 CSS 最佳實踐
https://zhuanlan.zhihu.com/p/29344146 Styled-components 是目前 React 樣式方案中最受關注的一種,它既具備了 css-in-js 的模塊化與參數化優點,又完全使用CSS的書寫習慣,不會引起額外的學習成本。本文是 styled-components 作者之一 Max Stoiber 所寫,首先總結了前端組件化樣式中的最佳實踐原則,然后在此基...