【創建虛擬環境】 命令:mkvirtualenv 名字 -p /usr/bin/python3 # 配置環境 退出虛擬環境 deactivate 進入虛擬環境 workon 虛擬環境名稱 刪除虛擬環境 rmvitualenv 虛擬環境名稱 進入環境後:pip freeze #顯示環境中的應用 安裝D ...
【創建虛擬環境】
命令:mkvirtualenv 名字 -p /usr/bin/python3 # 配置環境
- 退出虛擬環境 deactivate
- 進入虛擬環境 workon 虛擬環境名稱
- 刪除虛擬環境 rmvitualenv 虛擬環境名稱
進入環境後:pip freeze #顯示環境中的應用
安裝Django:pip install django==1.11.7
pip list #顯示環境中所有的包和版本
【創建Django項目】
django-admin startproject HelloDjango #創建一個工程 HelloDjango
wsgi.py:web網關服務介面
為項目創建應用:python manage.py startapp App #名為App
啟動服務:python manage.py runserver
runserver:內置的開發者伺服器
紅字報錯:有文件沒有進行遷移
pycharm打開django工程:打開manage.py的上一級目錄
配置項目的環境:setting -> project int -> + Vir En -> Exist
【測試環境 => 演示環境 => 生產環境】
【文件內容setting.py:】
- 項目所在的目錄
- 密鑰,生產環境:已上線,線上環境
- 調試開關,不要在生產環境中打開
- 允許主機,所有人都能訪問 ["*"]
- 內置app
- 中間件
- 跟路由
- 模板
- 調用WSGI應用,部署時使用?
- 資料庫,SQLIte,輕量級嵌入式資料庫,Android,IOS,WP手機中
- 驗證,密碼驗證器
- 語言編碼,中文 ''zh-hans"
- 統一協調時間,中國 "Asia/shanghai"
【資料庫遷移】
執行遷移:python manage.py migrate
【路由文件urls.py:】
【視圖函數views.py】
【Templates 模板配置】
第一種在應用中寫T
顯示T中index網頁
加個路由
render()直接渲染
"index.html" 輸入不智能提示,設置
settings中註冊應用
訪問(ip+埠):http://192.168.124.128:8000/index/
第二種模板T使用(開發中使用該方法,模板可以繼承,復用)
templates創建在工程目錄下,併在其中創建home.html
【拒絕上帝文件/類(什麼都能做,文件多)】
-- 項目如果邏輯過於複雜,可以進行拆分
-- 拆分為多個App
-- 然後繼續拆分路由器 urls
-- 在App(即Two)中創建自己的urls
-- urlpatterns 路由規則列表
-- 在根 urls 中進行子路由的包含
-- 子路由使用
-- 根路由規則 + 子路由規則
-- r'two/' + r'^index/' => http://192.168.124.128:8000/two/index/
python manage.py startapp Two #創建一類似App應用
創建的東西使用前需註冊
【分發路由:Two中創建urls.py】
將Two中的路由告訴項目中的根路由
訪問:http://192.168.124.128:8000/two/index/
【models 使用了ORM技術(Object Rekational Mapping 對象關係映射)】
-- 將業務邏輯和SQL進行瞭解耦合
-- 直接對資料庫進行操作,不需要用資料庫語言,相當於翻譯
-- object.save()
-- object.delete()
-- 關係型資料庫
-- 先定義資料庫 DDL
-- django 中通過 models 定義實現 資料庫表的定義
從模型models => 變成資料庫 Student表
然後進行遷移
python manage.py makemigrations #1.生成遷移文件
python manage.py migrate #2.執行遷移
直接插入數據
代碼插入數據
urls
views
開啟服務:python manage.py runserver 9000#運行在本機地址的9000埠
瀏覽器:ip:9000/two/addstudent/
顯示插入的學生
ORM抽象出來的操作入口
將學生數據拿出來
瀏覽器:ip:9000/two/getstudents/
將數據顯示在網頁上
快捷鍵:
-- control + p 參數提示
-- shift + f6 重命名,重構,引用該名處同時修改
傳值,映射模板,對應
模板語法
更新學生信息
url(r'^updatestudent/', views.update_student),
【更新刪除基於查詢】
刪除學生信息
url(r'^deletestudent/', views.delete_student),
-- 數據操作
-- 增刪改查
-- 存儲
-- save()
-- 查詢
-- 查所有 objects.all()
-- 查單個 objes.get(pk=xx) #主鍵存在=>更新,不存在=>創建
-- 更新
-- 基於查詢的
-- 查詢的對象,修改屬性,然後save()
-- 刪除
-- 基於查詢的
-- 調用 delete()
DataBase模塊,可以直接連接操作資料庫Sqlite和MySQL
三種MySQL連接驅動:
-- 連接mysql驅動
-- python2,3都能直接使用
-- 缺點:對mysql安裝有要求,必須指定位置存在配置文件
-- python-mysql
-- python2 支持
-- python3 不支持
-- pymysql
-- python2,python3都支持
-- 它還可以偽裝成前面的兩個庫
-- 安裝:pip install pymysql -i https://pypi.douban.com/simple
-- 偽裝
【換MySQL資料庫】
連接MySQL,創庫GP1HelloDjango
mysql -u root -p 111111
mysql> create database GP1HelloDjango charset=utf8;
退出資料庫
執行遷移:python manage.py migrate
報錯:資料庫驅動錯誤
操作:安裝驅動pymysql =》進行偽裝
報錯:1049, "Unknown database
操作:檢查各個環節資料庫命名,MySQL初建時,settings.py,pycharm添加
【在views中載入渲染模板原理】
將 模板語言 轉化為 HTML語言
python manage.py startapp Three
註冊到系統的setting中
Three =》urls =》添加到根路由 =》創建Three的模板文件夾和模板
=》模板經歷過程(載入loader =》渲染render)
【SHELL】
用shell進行調試
-- django shell
-- 集成python環境的shell終端
-- 通常在終端中做一些調試工作
-- 如何看待bug
-- 看日誌
-- 先看第一條,再看最後一條
-- 梳理思路
-- 程式在哪個位置和預期出現偏差
表關係
-- 1:1
-- 外鍵添加唯一約束,使之一對一
-- 1:M
-- 外鍵可以多個,通常做多對一
-- M:N
-- 產生額外一張關係表,在其中關聯兩張表的主鍵
數據集連
遷移,映射到庫中,生成遷移文件,執行遷移
在班級和學生表中添加信息
1.獲取學生的班級
views.py
2.找到班級的所有學生
顯示在網頁