Python Web 框架-Django day03
阿新 • • 發佈:2018-12-15
目錄
day02回顧
1.模板
- 載入方式
- loader
- render
- 語法
- 變數 return render(request,'xx.html',{}) 模板中:{{變數}}
- 標籤
- {% for %} ... {% endfor %}
- {% if %} ... {% endif %}
- {% comment %} ... {% comment %}
- {% static '' %}
- {% load static %}
- 過濾器 {{value|upper}} 將value變為大寫 {{value|lower}} 將value變為小寫 {{value|add:num}} 將num值累加到value之後 {{value|floatformat:n}} 將value四捨五入到n位小數 {{value|truncatechars:n}} 將value擷取保留至n位字元(包含...)
- 靜態檔案
在settings.py中設定變數
- 設定靜態檔案的訪問路徑 STATIC_URL = ‘/static’
- 設定靜態檔案的儲存路徑
STATICFILES_DIRS=(os.path.join(BASE_DIR,'static'),)
- 專案的根目錄處建立一個static目錄
- 每個應用中建立一個static目錄
1.模板
- 模板的繼承
- 語法
- 在父模板中
必須要標識處哪些內容在子模板中允許被修改
標籤:
{% block 名稱 %}
{% endblock %}
blcok的作用:
- 在父模板中正常顯示
- 在子模板中,如果不修改的話則按父模板的顯示,要是修改的話則按照子模板的內容顯示
- 在子模板中
- 指定繼承自哪個父模板 {% extends ‘父模板名稱’ %}
- 增加 block 標籤,改寫屬於自己的內容
{% block 名稱 %}
{% endblock %}
練習:
- 建立專案 - fruitday
- 建立應用 - index,配置好響應的路由
- 訪問http://localhost:8000/login 顯示 之前已經做好的 登入頁面(處理好靜態資原始檔)
- 訪問http://localhost:8000/register 建立一個新的模板繼承自登入頁面,並按照註冊的樣式進行模板的重寫
- 在父模板中
必須要標識處哪些內容在子模板中允許被修改
標籤:
{% block 名稱 %}
{% endblock %}
blcok的作用:
- 語法
- url()的name引數
- url的語法 url(regex,views,kwargs,name) name:為了給當前的url地址起別名,反向解析時使用 反向解析:通過別名找到對應的地址 url(regex,views,kwargs=None,name='別名')
- 反向解析
- 在模板上做反向解析
- 基本解析 {% url '別名' %}
- 帶參的解析 {% url '別名' '引數1' '引數2' %}
- 在檢視上做反向解析
- 基本解析 url = reverse('別名') url 就是通過別名解析出來的地址
- 帶參的解析 url = reverse('別名' args=(引數1,引數2))
- 在模板上做反向解析
2.模型 - Models
- 什麼是模型 根據資料庫表結構創建出來的class
- ORM
三大特徵
- 表 到 類的對映
- 資料型別的對映
- 關係對映
- 建立 和 配置資料庫
- 建立資料庫 create database webdb default charset utf8 collate utf8_general_ci;
- Django資料庫配置
在settings.py中配置資料庫資訊
DATABASES = {
'dafault' : {
... ...
}
}
- ENGINE:django.db.backends.sqlite3 連線到mysql:django.db.backends.mysql
- NAME:連線到資料庫的名稱
- USER:登入到資料庫的使用者名稱,通常為root
- PASSWORD:登入到資料庫的密碼,通常為 123456
- HOST:要連線到主機地址 本機:localhost 或 127.0.0.1
- PORT:指定埠號 ,mysql為3306
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'webdb', 'USER':'root', 'PASSWORD':'123456', 'HOST':'localhost', 'PORT':3306, } }
- 資料庫的同步操作
- ./manage.py makemigrations 作用:將每個應用下的models.py檔案生成一個數據庫的中間檔案,並將中間檔案儲存在migrations的目錄檔案中
- ./manage.py migrate 作用:將每個應用下的migrations目錄中的中間檔案同步到資料庫
- 編寫Models
- 舉個例子
在index應用中的 models.py 中
#建立一個實體類 - Publisher
#用於表示出版社資訊,屬性如下
#1.name:出版社名稱(varchar)
#2.address:出版社所在地址(varchar)
#3.city:出版社所在城市(varchar)
#4.country:出版社所在國家(varchar)
#5.website:出版社的網址(varchar)
class Publisher(models.Model): name = models.CharField(max_length=30) address = models.CharField(max_length=200) city = models.CharField(max_length=50) country = models.CharField(max_length=50) website = models.URLField()
- Models的語法規範
class ClassName(models.Model):
屬性 = models.欄位型別(欄位選項)
欄位型別:對映到資料庫表中的資料型別
CharField() - varchar
欄位選項:指定生成的欄位的說明資訊
max_length=30
- 欄位型別(Field Types):
- BooleanField() 程式語言中適應 True 和 False 表示該列的值 資料庫中使用 1 和 0 來表示具體的值 資料型別為:tinyint
- CharField() 字串 資料型別為:varchar
- DateField() 程式語言中使用 字串 或 date 型別的資料表示值 資料庫中的使用 時間字串 資料型別為:date
- DateTimeField() 資料型別為:datetime
- DecimalField() 資料型別為:decimal money = models.DecimalField(max_digits=7,decimal_places=2)
- FloatField() 資料型別為:float
- IntegerField() 資料型別為:int
- EmailField() 資料型別為:varchar
- URLField() 資料型別為:varchar
- ImageField() 儲存圖片的路徑 資料型別為:varchar image = models.ImageField(upload_to='images/users/')
- 欄位選項(Field Options):
- default 作用:為當前欄位指定預設值
- null 作用:指定當前欄位是否允許為空,預設為False,不能為空
- primary_key 作用:指定是否為主鍵
- db_column 作用:指定當前欄位對映到表中類的名字,如果不指定則採用屬性名作為列名
- 練習:
在index 應用中的models.py中追加兩個class
- Author - 作者
- name - 姓名
- age - 年齡
- emial - 郵箱(允許為空)
class Author(models.Model): name = models.CharField(max_length=30) age = models.IntegerField() email = models.EmailField(null=True) isActive = models.BooleanField(default=True)
- Book - 圖書
- title - 圖書
- publicate_date - 出版時間
class Book(models.Model): title = models.CharField(max_length=50) publicate_date = models.DateField()
- Author - 作者
- 欄位型別(Field Types):
- 舉個例子
在index應用中的 models.py 中
#建立一個實體類 - Publisher
#用於表示出版社資訊,屬性如下
#1.name:出版社名稱(varchar)
#2.address:出版社所在地址(varchar)
#3.city:出版社所在城市(varchar)
#4.country:出版社所在國家(varchar)
#5.website:出版社的網址(varchar)
- 相關指令
- 通過資料庫自動匯出models ./manage.py inspectdb > 檔名.py
- 資料的版本的切換
- ./manage.py migrate 執行所有應用中最新版本的資料庫中間檔案
- ./manage.py migrate 應用名稱 版本號 執行指定應用中指定版本的中間檔案 ex: ./manage.py migrate index 0002
示例 請點選
kauw