【Django】簡介和 hello Django
標簽: python碎碎念 python django 數據庫
Django 簡介
Django 最初發布在 2005 年,是當前 python 比較成熟且知名的網絡框架,最初被用來制作 新聞站點django 的官方網站:https://www.djangoproject.com/;django 采用的是 MVC 的框架模式,因為一個Django 項目由 models view 和 templates 組成,所以也被叫做 MVT 的設計模式
MVC 設計模式
MVC 是一種業務邏輯,使數據和界面顯示進行分離,將業務邏輯聚集到一個部件里面,代碼復用率高。MVC 被發展起來用來實現映射傳統的輸入,處理 和邏輯輸出功能;MVC 的核心思想是 解耦;最大優點是 方便代碼復用。
MVC :M:Model: 是提供數據處理的服務性接口,在服務端對數據進行處理,實現對數據增刪改查的相關功能;V: View : 負責數據的展示和呈現,也就是實現在客戶端或者瀏覽器中向用戶展示數據;C : Controller : 實現對數據進行增刪改查的控制動作,(比如調用方法對特定的數據進行查詢)
**如圖:**首先通過 Controller 接收用戶輸入的操作,并通過 Controller 將用戶的數據操作指令傳輸給 Model 通過 Model 在服務端對用戶需要的數據進行操作,并將最后的結果返回給 View :View 的功能是向用戶顯示對應的數據。
Django 的 MVT 設計模式
上圖是比較適合 Django 的設計模式 和用戶數查詢流程:首先使用 Controller 接收用戶的 request ,并將請求內容傳送給 Model ;通過 Model 實現服務端的數據查詢和操作,將最后的結果返回給 Controller ,最后 Controller 將獲取的數據(data)傳輸給 View ;view 的功能是向用戶展示數據。
MVT 與 MVC 的異同
- M:Model :負責業務對象和數據庫對象
- V:View :負責業務邏輯,比能在適當的時候調用 Model 和 Template(相當于 MVC 的 controller)
- T :Template :負責把頁面展示給用戶(相當于 MVC 的 view)
- 注意:Django 中還有一個 URL 分發器,主要用于將一個 url 分發給不同的 View 進行處理,然后View 在調用相應的 Model 和template
Django 的工作模式
用戶發送的請求首先會被 URL 控制器接收,并根據規則發送給對應的 view 視圖函數 進行控制和數據操作;View 接著對Models 發送數據請求,通過 models 從數據庫中查詢數據;必能降最后的結果返回給 View ;View 調用 template 將返回的數據渲染成對應的模板數據展示給用戶
Django 認識補充
Django 自帶一個 開發者服務器 ;通過命令 runserver 快速部署,但是這個服務器性能比較低,一般只在開發的時候使用;
Django 是一個重量級框架,自帶的插件很多
Hello Django
使用 win10 系統之下的 pycharm 進行新建 Django 項目
win 10 的pycharm 工具在創建一個新的 Django 項目的時候會新建一個虛擬環境 (virtualenv),等待項目加載完畢,便會出現這樣的一個目錄
在目錄文件下會多出一個與項目同名的包,其中__init__.py
是包標識文件,說明了這個目錄是一個python包,settings.py
是這個項目的設置文件;urls.py
:是這個項目的url 管理文件;wsgi.py
的作用是用來做項目的遷移。
再初步打開這個項目之后,我們在terminal 終端中輸入以下命令:
(HelloDjagodemo) F:\preprojects\django\HelloDjagodemo>python manage.py startapp App
下載創建第一個 App 項目文件,命令執行結束之后會在項目目錄內生成對應的 App 文件包
其中 migrations 包的作用是項目遷移;__init__.py
:說明這個目錄是一個python包;admin.py
:管理員包管理工具;models
:用于處理數據模型,實現功能的方法;views
: 用于傳遞控制信息和調用template返回結果的函數視圖。
**運行項目:**在terminal中輸入以下代碼:
>python manage.py runserver # 運行項目的命令
# 此時項目會在 Django 自帶的服務器中運行
# 項目成功運行會輸出以下信息
Run 'python manage.py migrate' to apply them. #(省略一部分未部署提示)
May 25, 2020 - 11:40:33 # 以下信息說明了項目成功運行,項目默認的端口是 8000
Django version 3.0.6, using settings 'HelloDjagodemo.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
此時我們可以在瀏覽器中訪問這個項目;
注意點:使用 pycharm 打開 Django 工程的時候要保證是在 manage.py 的上一級(選中 manage.py 的上一級文件夾打開一個 Django 工程)
settings 文件解析
因為 settings 文件是Django 項目的整體設置文件,以下對于 Django 項目的設置文件settings.py
進行相關的參數解析
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# 參數 : BASE_DIR:指的是調用的項目所在的根目錄
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'j_uxgnz&slrrrz44x8m18+1$cb4qzhpn)$+zstmcyghe%w2-=j'
# 參數:SECURT_KEY:指的是在生產環境中項目使用的**(注意是生產環境不是開發環境)
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
# 在開發環境中,打開 Django 的調試模式
ALLOWED_HOSTS = ["*"]
# 允許通過的主機名,一般設置成 * 通配符,允許任意域名的主機訪問
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
# INSTALLED_APPS =[]:這個列表展示了在 Django 項目創建的過程中安裝的功能
# 代指中間件
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
# 模板的相關參數和插件
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')]
,
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
# 用于遷移的app 參數
WSGI_APPLICATION = 'HelloDjagodemo.wsgi.application'
# 剛開始默認的數據庫環境是 SQLlite
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
# 時間與語言設置(第一個參數語言設置默認是英語)
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
--------------------------
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Aisa/Shanghai'
# 修改成為本地時間
當修改了時間和語言之后,我們再次運行項目,發現起始界面變成了中文
在 pycharm 中配置數據庫可視化(以案例SQLlite為例)
在 win 10 的 默認pycharm 程序中 右擊對應的數據庫文件沒有 as data source 選項,這個時候需要點擊軟件右側的 database 進行手動配置,點擊 database 彈出框的 + 在 data source 中選擇對應的數據源文件(文件類型,這里選擇的是SQLlite)
配置文件的對應路徑(在 File: 選框中填充對應的文件路徑即可/也就是選擇到對應的文件)
點擊應用–確定,配置成功。
對 Django 項目進行遷移部署
在直接運行項目的時候我們發現會有以下提示:
You have 17 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, ses
sions.
Run 'python manage.py migrate' to apply them.
表明項目沒有進行部署,這個時候我們需要使用命令:
# 命令:
>python manage.py migrate # 這個命令是關于 Django 項目的遷移部署
# 輸出信息
Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
Applying contenttypes.0001_initial... OK
...
在部署過程結束后,我們打開 database – 刷新 發現數據表多出了部署后的部分
此時對于這個項目的基本設置和部署,已經全部完成了
智能推薦
Django Hello,Word!(Windows10)
Windows10 源碼安裝 Django 下載地址:https://www.djangoproject.com/download/ 下載 Django 壓縮包,解壓并和Python安裝目錄放在同一個根目錄,進入 Django 目錄,執行python setup.py install,然后開始安裝,Django將要被安裝到Pytho...
Python(5)——Django之hello Python
為什么80%的碼農都做不了架構師?>>> 1、 eclipse-->New Python Django project-->hello 會默認生成四個文件,待會再詳細說這四個文件。 2、右鍵src下的hello新建python moduel,index.py 3、修改urls.py文件: 4、run ...
Python web模版Django-06 Hello Django [用模版]
在上一篇文章Django-05中,實現展現"Hello Django!"并沒有用模版,而是直接用的Httpresponse方法實現的。 這篇文章中將嘗試用Django模版來實現"Hello Django!"。 step1: 在sign 目錄下創建文件夾 "templates",注意文件夾名字不要寫錯,然后在文件夾下創建index.html...
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 以上述例子,判斷一個生產出...