1. 入門Django框架
1.1 介紹
- 內容
環(huán)境搭建及版本選擇
URL及視圖函數(shù)
模板、ORM、表單
后臺管理、命令行工具、安全及運維
1.2 初識Django
Django介紹
-
Django發(fā)展歷史
world online的三位工程師使用Python開發(fā)了Django。
Django根據(jù)比利時的爵士音樂家Django Reinhardt命名。
2005年開源,2008年發(fā)布1.0版本。
LTS(Long Term Support)支持。 -
Django介紹
開源免費的Python高級web框架,內置電池,用于快速開發(fā)可靠、安全、可擴展的web應用。
https://docs.djangoproject.com/en/1.11/ -
MVT模型
模型(Model)←→視圖(View)←→模板(Template) - 網(wǎng)站開發(fā)流程
(1) 選擇合適的版本
(2) 安裝及配置
(3) 生成項目結構
(4) 內容開發(fā)
(5) 迭代、上線、維護 - 版本兼容情況
Django版本 |
Python版本 |
|---|---|
1.11 |
2.7、3.4、3.5、3.6、3.7(added in 1.11.17)
|
2.0 |
3.4、3.5、3.6、3.7
|
2.1、2.2
|
3.5、3.6、3.7
|

image.png
當前選擇:
Django V1.11.*
- 環(huán)境參數(shù)
Windows 10、Xampp/Navicat for MySQL、Python 3.6+、Django 1.11.*、Flask 1.0.* - 安裝
Django 1.11.*
(1) 安裝
pip3 install -i https://pypi.doubanio.com/simple django==1.11.28
其中,-i表示指定源。
(2) 檢測版本
? ~ python3
Python 3.7.1 (default, Nov 28 2018, 11:55:14)
[Clang 9.0.0 (clang-900.0.39.2)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>> django.__version__
'1.11.28'
>>> quit()
初始化項目
- 創(chuàng)建虛擬環(huán)境
django1.11虛擬環(huán)境
? django mkdir django1.11 # 創(chuàng)建虛擬環(huán)境目錄
? django cd django1.11 # 進入目錄
? django1.11 pipenv --python 3.7.1 # 初始化當前虛擬環(huán)境的Python版本
? Successfully created virtual environment!
Virtualenv location: /Users/nimengwei/Envs/django1.11-yxhb7L3z
? django1.11 pipenv shell # 激活虛擬環(huán)境
(django1.11) ? django1.11 pip install django==1.11.28 # 安裝django1.11.28
Successfully installed django-1.11.28 pytz-2019.3
(django1.11) ? django1.11 python3
>>> django.__version__
'1.11.28'
>>> quit() # 退出Python
(django1.11) ? django1.11 exit # 退出虛擬環(huán)境
? django1.11
django3.0虛擬環(huán)境
? django mkdir django3.0 # 創(chuàng)建虛擬環(huán)境目錄
? django cd django3.0 # 進入目錄
? django3.0 pipenv --python 3.7.1 # 初始化當前虛擬環(huán)境的Python版本
? Successfully created virtual environment!
Virtualenv location: /Users/nimengwei/Envs/django3.0-T5e2e5tT
? django3.0 pipenv shell # 激活虛擬環(huán)境
(django3.0) ? django3.0 pip install django # 安裝django最新穩(wěn)定版
(django3.0) ? django3.0 python3
>>> import django
>>> django.__version__
'3.0.4'
>>> quit() # 退出Python
(django3.0) ? django3.0 exit # 退出虛擬環(huán)境
? django3.0
- 命令行創(chuàng)建
django項目
(1) 命令介紹
生成項目模板django-admin.py startproject 項目名稱
創(chuàng)建模塊python manage.py startapp 模塊名
啟動服務器python manage.py runserver
(2) 命令行演示
? ~ cd /Users/nimengwei/Code/mycode/python/django/django1.11 # 進入虛擬環(huán)境目錄
? django1.11 pipenv shell # 激活虛擬環(huán)境
(django1.11) ? django1.11 cd ../../project #進入項目所在文件夾
(django1.11) ? project django-admin.py startproject django_project # 生成項目模板
(django1.11) ? project cd django_project
(django1.11) ? django_project python manage.py startapp accounts
(django1.11) ? django_project python manage.py startapp course
(django1.11) ? django_project python manage.py runserver # 啟動服務器
March 21, 2020 - 12:22:44
Django version 1.11.28, using settings 'django_project.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
注意:激活虛擬環(huán)境之后,可以在任意路徑創(chuàng)建項目。
- 項目模板生成的目錄結構
|--django_project項目目錄
| |--__init__.py包的入口文件
| |--settings.py項目配置文件
| |--urls.pyurl訪問地址配置文件
| |--wsgi.pyuwsgi配置
|--db.sqlite3sqlite數(shù)據(jù)庫
|--manage.py命令管理工具
|--accountsaccounts模塊
|--coursecourse模塊 -
Pycharm創(chuàng)建django項目
(1)New Project新建項目
新建項目
(2) 添加Pipenv虛擬環(huán)境
虛擬環(huán)境
(3)運行項目
運行項目
(4) 修改配置
修改配置
URL配置及參數(shù)傳遞
-
RUL協(xié)議
http- 超文本傳輸協(xié)議資源
https- 用安全套接字層傳送的超文本傳輸協(xié)議
ftp- 文件傳輸協(xié)議
注釋:http默認端口為80,https默認端口為443。 -
HTTP狀態(tài)碼
2xx- 請求成功
3xx- 重定向
4xx- 請求錯誤
5xx- 服務器錯誤 -
URL的正則匹配
(1) 參數(shù)傳遞
urls.py
url(r'^article/(?P<year>[0-9]{4})/$', views.article)
views.py
def article(request, year):
return HttpResponse('article: ' + year)
(2) URL的嵌套
命令行創(chuàng)建模塊
? django_ide git:(master) ? cd /Users/nimengwei/Code/mycode/python/django/django1.11
? django1.11 pipenv shell
Launching subshell in virtual environment...
. /Users/nimengwei/Envs/django1.11-yxhb7L3z/bin/activate
nimengwei@nimengweideMacBook-Pro django1.11 % . /Users/nimengwei/Envs/django1.11-yxhb7L3z/bin/activate
(django1.11) nimengwei@nimengweideMacBook-Pro django1.11 % cd /Users/nimengwei/Code/mycode/python/Project/django_ide
(django1.11) nimengwei@nimengweideMacBook-Pro django_ide % python manage.py startapp oauth
(django1.11) nimengwei@nimengweideMacBook-Pro django_ide % python manage.py startapp accounts
(django1.11) nimengwei@nimengweideMacBook-Pro django_ide % python manage.py startapp pay
(django1.11) nimengwei@nimengweideMacBook-Pro django_ide %
- 設計優(yōu)雅的
URL
(1) 更簡潔的URL
優(yōu)化前:http://example.com/article/?year=2018&month=12&day=21
優(yōu)化后:http://example.com/article/2018/12/21
(2) 使用命名空間
兩種不同的角色,訪問不同的URL,但是結果相同。
使用namespace指定命名空間。
urlpatterns = [
url(r'^author-polls/', include('polls.urls', namespace='author-polls')),
url(r'^publisher-polls/', include('polls.urls', namespace='publisher-polls')),
]
(3) 使用name給URL指定名稱
url(r'^article/2018/$', views.article, name='article_detail')



