什么是Django
官方文檔
Django提供了一個高級的框架邑闺,用它只需要很少的幾行代碼就能完成一個WEB應用弱贼,Django是由Python寫出來的.
Django特點:
1.遵循MVC開發(fā)模式.
2.內(nèi)置進行快速web開發(fā)所需的各種組件
3.利用ORM(對象關系映射)機制來定義和數(shù)據(jù)庫,使開發(fā)人員可以構建出獨立于具體數(shù)據(jù)庫引擎的web應用
4.內(nèi)置 web Server,開發(fā)人員無需安裝就可以進行web應用的開發(fā)和測試.
5.具有靈活而強大的自定義url系統(tǒng)
6.支持多國語言
MTV設計模式
M:model數(shù)據(jù)模型
T:template模板
V:views視圖
安裝Django
pip install django==1.11.16
pip install django==1.11.16 -i 臨時指定pypi源
pip -V --> 查看pip的版本和來自哪個python解釋器
pip list --> 查看當前python解釋器中安裝的第三方包和版本號
pip uninstall django --> 卸載
pip freeze > requirements.txt --> 當前Python解釋器環(huán)境的第三方包名和版本號都導出到requirements.txt中
pip install -r requirements.txt --> 遞歸的按照requirements.txt中列出來的安裝
Django請求流程圖
使用Django
創(chuàng)建項目和運行
1. 命令行
1.創(chuàng)建項目:<pr>djiango-admin startproject 項目名<pr/>
2. 啟動運行
(1) 切換到項目的根目錄下
(2) 執(zhí)行下面代碼:
python3 manage.py runserver
python3 manage.py runserver 127.0.0.1:8080
python3 manage.py runserver 8080
3. 創(chuàng)建APP
python manage.py startapp app01
2. PyCharm
1.在菜單欄點擊file選項
2.選擇New Project項目里的Django,右邊寫項目名和選擇python解釋器
- 創(chuàng)建APP
在上圖中輸入app項目名稱 - 啟動運行
(1) 先看綠色三角左邊的名字和項目名是否一致,一致的話才進行下一步
(2) 用鼠標左鍵點一下綠色三角
配置環(huán)境
Django項目的目錄
1. mysite
-mysite
-init.py
-urls.py(函數(shù)和函數(shù)的對應關系)
-settings.py(Django項目的配置信息)
-wsgi.py(收發(fā)socket消息相關)
-manage.py(命令行入口文件)
-Template(專門用來放HTML文件的)
配置settings.py文件
1.注冊APP:在INSTALLED_APPS中注冊APP在后邊輸入:'app01.apps.App01Config',
2.MIDDLEWARE: 中間件
3.TEMPLATES: 模板的相關配置
4.DATABASES: 數(shù)據(jù)庫相關的配置:(提前創(chuàng)建一個數(shù)據(jù)庫)
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
# 告訴Django要連接的是MySQL數(shù)據(jù)庫
'NAME': 'day57', # 數(shù)據(jù)庫名稱
'HOST': '127.0.0.1', # 數(shù)據(jù)庫的IP
'PORT': 3306, # 數(shù)據(jù)庫的端口
'USER': 'root', # 連接數(shù)據(jù)的賬號
'PASSWORD': '123' # 連接數(shù)據(jù)庫的密碼
}
}
5.STATIC_URL = '/static/' 靜態(tài)文件的別名,模板中以別名開頭
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static'),
]
- 告訴django使用pymysql的模塊鏈接MySQL數(shù)據(jù)庫
在與setting同級的目錄下的init.py中寫代碼:
import pymysql
pymysql.install_as_MySQLdb()
7.數(shù)據(jù)庫的遷移
python manage.py makemigrations # 檢查 models.py 是否有變化,記錄變化
python manage.py migrate # 將變更記錄同步到數(shù)據(jù)庫中
Django在終端的基本操作
python -m django --version ----> 查看Django的版本
django-admin startproject mysite ----> 創(chuàng)建一個mysite項目
python manage.py shell ----> django項目環(huán)境終端
python manage.py startapp app01 ----> 創(chuàng)建應用程序
python manage.py runserver [8000] ----> 啟動程序
python manage.py makemigrations ----> 進行創(chuàng)建模型變化遷移
python manage.py migrate ----> 運行應用變化到數(shù)據(jù)庫
python manage.py syncdb ----> 清空數(shù)據(jù)庫(保留數(shù)據(jù)表)
python manage.py createsuperuser ----> 創(chuàng)建管理員用戶
python manage.py changepassword username ----> 修改用戶名密碼
基礎必知必會3件套
使用的時候先導入:
from django.shortcuts import HttpResponse, render, redirect
1. HttpResponse
內(nèi)部傳入一個字符串參數(shù)矾利,返回給瀏覽器
def index(request):
# 業(yè)務邏輯代碼
return HttpResponse("OK")
2. render:
除request參數(shù)外還接受一個待渲染的模板文件和一個保存具體數(shù)據(jù)的字典參數(shù)。
將數(shù)據(jù)填充進模板文件馋袜,最后把結(jié)果返回給瀏覽器男旗。
- render(request,'index.html')
- render(request,'login.html'{'error_msg':error_msg})
def index(request):
# 業(yè)務邏輯代碼
return render(request, "index.html", {"name": "john", "hobby": ["燙頭", "泡吧"]})
3. redirect:重定向(跳轉(zhuǎn))
- redirect('/index/'):在同一個網(wǎng)站的不同的地址之間跳轉(zhuǎn)
- redirect('http://www.baidu.com'):跳轉(zhuǎn)到具體的URL
def index(request):
# 業(yè)務邏輯代碼
return redirect("/home/")
補充
request
- request.method --> 所有跟請求相關的數(shù)據(jù)都封裝到這個對象
- request.GET --> 請求方法的全大寫(GET/POST/...)
request.GET['key'] --> 獲取URL中的參數(shù)(類似字典),POST請求的URL也可以帶參數(shù)
request.GET.get('key') - request.POST --> 獲取POST請求中攜帶的參數(shù)(類似字典)
form表單提交數(shù)據(jù)的三個關鍵
- form標簽必須要有action和method屬性
- form標簽中獲取用戶輸入的標簽必須要有name屬性
- form標簽中必須要有submit按鈕