牛刀小試
- 簡談Django
- 搭建開發環境
- 做一個簡單的部落格網站
寫在開始之前:
要求:python基礎、HTML基礎、浏覽器上網的基本原理
以下環境為:windows10專業版 64位 、Django1.11.1 、python2.79
官方介紹:
Django是一個進階的Web架構,鼓勵快速開發和簡潔,有着實用的設計。
由經驗豐富的開發人員建構,解決了大部分Web開發的麻煩,是以使用Django可以專注于編寫自己所需要的應用程式,而不需要重新建立輪子。
Django是免費的和開放源代碼的。
1.進入Django官方網站 https://www.djangoproject.com/ 點選 DOWNLOAD 進入 DOWNLOAD 頁面
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsISPrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdsATOfd3bkFGazxCMx8VesATMfhHLlN3XnxCMwEzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5yM0EGZhlTOkFDM5YjMjZzYiFWNjdzM1IGMyYWOyMTOi9CXxIzLcRDMxIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjL2M3Lc9CX6MHc0RHaiojIsJye.png)
2.在 DOWNLOAD 頁面點選 the FAQ,了解 Django不同版本所支援的python版本
根據 the FAQ 頁面的内容決定需要安裝的對應的 Django 和 python 的版本
3.安裝 python ,進入python 官方網站 https://www.python.org/,點選DOWNLOAD,下載下傳所需要的版本
4.安裝Django
方法一(pip安裝):在windows DOS界面下,運作 pip install Django==版本
pip install Django==1.11.1
方法二(源碼安裝):在官網DOWNLOAD頁面下載下傳tar.gz包然後解壓
在DOS界面下進入解壓後的源碼包的目錄,運作 python setup.py install
方法三(git下載下傳):git clone https://github.com/django/django.git
5.檢視Django是否安裝成功
DOS界面下 運作python -m django --version
或者進入python IDE界面下導入django子產品
DOS界面下運作python
import django
6.編譯器,pycharm 的安裝,進入pycharm的官網的 DOWNLOAD 頁面下載下傳
1.建立項目,DOS界面下運作 django-admin startproject 項目名稱,此時在該目錄下将多一個以項目名稱為名的檔案夾
2.切換之myblog目錄下,運作python manage.py檢視指令幫助
3.在myblog目錄下,運作 python manage.py runserver 啟動 django 服務
4.打開浏覽器輸入網址 http://127.0.0.1:8000/
服務啟動成功将顯示以下界面
5.修改端口号
6.目錄檔案簡介
├── manage.py 與項目進行互動的指令行工具集的入口,即項目管理器。
└── myblog
├── __init__.py python中聲明子產品的檔案
├── settings.py 該Django項目的設定與配置檔案
├── urls.py url配置檔案
└── wsgi.py python伺服器網關接口,python應用與web伺服器之間的接口
7.建立應用
建立步驟:進入項目中manage.py的同級目錄
運作 python manage.py startapp blog
添加應用名到 setting.py 中的 INSTALLED_APPS 裡
8.應用目錄介紹
建立第一個頁面(響應)
編輯views.py
每個響應對應一個函數,函數必須傳回一個響應,函數必須存在一個參數,一般約定為request
每個響應函數對應一個URL
編輯URL(第一種URL配置)
每個URL都以URL的函數形式寫出來
URL函數放在urlpatterns清單中
URL函數三個參數:URL(正則)、對應方法、名稱
DOS界面下啟動服務
打開浏覽器輸入 127.0.0.1:8000/index
* 編輯URL(第二種URL配置)
包含其他URL
在根 urls.py 中引入 include
在根APP目錄建立urls.py檔案,格式與根urls.py相同
根urls.py中urls函數第二個參數改為 include('blog.urls')
注意事項:
根 urls.py 針對APP配置的URL名稱是該APP所有url的總路徑
配置url時注意正規表達式結尾符$和/
打開浏覽器輸入 127.0.0.1:8000/blog
9.Templates
什麼是Templates?HTML檔案,使用了Django模闆語言(Django Templates Language,DTL),也可以使用第三方語言,修改setting.py中TEMPLATES中的BACKEND的值
開發第一個Templates
在APP的根目錄下建立名叫 Templates 的目錄,在該目錄下建立HTML檔案
在views.py中傳回render()
打開浏覽器,輸入
DTL的簡單使用
render()函數中支援一個dict類型參數,該字典是背景傳遞到模闆的參數,鍵為參數名
在模闆中使用 {{參數名}} 來直接使用
*Django查找Templates
Django按照INSTALLED_APPS中的添加順序查找Templates,不同APP下T emplates目錄下的同名html檔案會造成沖突
解決方案:在APP下的Templates目錄下建立以APP名為名稱的目錄,将HTML檔案放入新建立的目錄下,然後修改對應的相關urls檔案
Models是什麼?
通常,一個Model對應資料庫的一張資料表
Django中Models以類的形式表現,它包含了一些基本字段以及資料的一些行為
在應用根目錄下建立models.py,并引入models子產品,Django已自動完成
建立類,繼承models.Model,該類即一張資料表
在類中建立字段 https://docs.djangoproject.com/en/1.10/ref/models/fields/
字段建立,字段即類裡面的屬性(變量)
attr = models.CharField(max_length=64)
生成資料表
指令行中進入manage.py同級目錄,執行 python manage.py makemigrations app名(可選)
再執行 python manage.py migrate
檢視
Django會自動在 app/migrations/ 目錄下生成移植檔案
執行python manage.py sqlmigrate 應用名 檔案ID //檢視SQL語句
檢視并編輯db.sqlite3,使用第三方軟體sqlite expert personal(輕量級完全免費)
頁面呈現資料
背景步驟:編輯views.py中的import models
article = models.Article.objects.get(pk=1)
前端步驟:模闆可直接使用對象以及對象的‘.’操作
{{ article.title }}
打開浏覽器測試
Admin簡介
什麼是Admin?一個Django自帶的背景管理系統
配置Admin
建立使用者(建立超級使用者) python manage.py createsuperuser
WEB登陸背景 127.0.0.1:8000/admin
修改setting.py中的 LANGUAGE_CODE='zh_Hans' ,使背景界面以中文界面呈現
配置應用
在應用下admin.py中引入自身的models子產品(或裡面的模型類)
編輯admin.py:添加admin.site.register(Article)
建立資料預設顯示名稱
在Artcile類下添加一個方法(在models.py中)
根據python版本選擇__str__(self)或 __unicode__(self),一般選擇__unicode__(self)
return self.title
完善部落格頁面
修改views.py
修改.html檔案
測試
完善部落格文章頁面:編輯views.py,建立相應的html檔案,再修改應用下的urls.py
配置Django中的超連結
template中可以用"{% url 'app_name:url_name' param %}"
再配URL
url 函數的名稱參數
根urls,寫在include()的第二個參數位置,namespace='blog'
應用下則寫在url()的第三個參數位置,name='article'
主要取決于是否使用include引用了另一個url配置檔案
修改html檔案中的a标簽
完善部落格撰寫頁面
編輯html檔案
編輯views.py
編輯urls.py
再編輯html檔案
完善編輯文章頁面
補充内容
Tempaltes過濾器
什麼是過濾器?
寫在模闆中,屬于Django模闆語言
可以修改模闆中的變量,進而顯示不同的内容
怎麼使用?
{{ value | filter }}
例子:{{ list_nums | length }}
過濾器可疊加:{{ value | filter1 | filter2 | …… }}
Django shell
什麼是Django shell?
它是一個python的互動式指令行程式,它自動引入了我們的項目環境
我們可以使用它與我們的項目進行互動
如何使用?
python manage.py shell
from blog.models import Article
Article.objects.all()
有什麼作用?
可以使用Django shell來進行一些調試工作
測試未知的方法
建立admin配置類
class ArticleAdmin(admin.ModelAdmin)
注冊:admin.site.register(Article,ArticleAdmin)
顯示其他字段
list_display = ('title','content','pub_time')
list_filter = ('pub_time')
list_display同時支援tuple和list
編輯models.py
移植資料(一定要做)
python manage.py makemigrations
python manage.py migrate
python manage.py runserver