一. 登陸功能的實現html
1. form表單提交數據的注意事項:python
1. 是form不是from,必需要有method和actionmysql
2. 全部獲取用戶輸入的表單標籤要放在form表單裏面,表單標籤(input,select)必需要有name屬性sql
3. form表單必需要有submit按鈕數據庫
2. GET和POSTdjango
用GET: 向服務端請求一個網頁的時候;搜索引擎檢索時瀏覽器
用POST: 使用表單向服務器提交數據時服務器
3. request.method --> 獲取的是你請求的方法(GET/POST...)session
# 返回的GET,POST都是大寫的,因此在編寫業務邏輯時,必須大寫!!!app
4. request.POST --> 獲取POST提交過來的所有數據(字典)
# ps request.POST的格式{'name':[], 'password': []}. 能夠根據[key]的形式取value,但推薦用.get(),這樣沒有的話,返回None,不報錯。
5. redirect --> 跳轉到指定頁面!!!
# 當瀏覽器解析到3**時,直接向redirect的url發請求,不會繼續解析。
總結: 基礎必會三件套
from django.shortcuts import HttpResponse,render,redirect
a. HttpResponse("OK")
b. render(request, "login.html")
c. redirect("URL")
6. app: app之於project,至關於學院之於學校;一個學校能夠有多個學院;當項目較大時,推薦將不一樣的文件放入不一樣的app中
建立APP:
a. 在pycharm中的terminal中
python3 manage.py startapp app01
# /usr/local/bin/python3.6 manage.py startapp app01
b. 在項目創立初期,在application中填寫app01
c. Tools -> Run manage.pyTask -> startapp app01
建立好APP,記得告訴Django, 我有這個app:
在settings.py中,
# 安裝的app都有哪一些
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app01',
# 'app01.apps.App01Config', # 推薦這一種,不過目前兩種方式均可以
]
推薦將函數放到app01下的views.py中
7. 若是出現forbidden,去settings.py中將46行附近的csrf相關行註釋掉
二. ORM(對象關係映射)
1. 複習導入pymysql模塊,操做數據庫數據
import pymysql
conn = pymysql.connect(
host="127.0.0.1",
port=3306,
user="root",
password="123",
database="day62",
charset="utf8"
)
cursor = conn.cursor()
cursor.execute("select * from user;")
ret = cursor.fetchall()
2. 用orm操做數據庫(至關於導入jQuery,用jQuery語句($("#id"))替代原生sql語句( document.getElementById(id)))
數據表 --對應--> 類
數據行 --對應--> 實例對象
字段 --對應--> 屬性
3. 代碼操做數據庫的方式比較;
直接執行SQL
優勢:執行效率高
缺點:開發效率低
按照特定的語法寫,翻譯成SQL語句再去執行
優勢:開發效率高
缺點:執行效率低,你會忘記SQL語句
總結:ORM和原生的SQL語句,根據具體的應用場景自行取捨。
4. 不一樣框架用不一樣的orm
e.g. sqlAlchemy (Flask的orm)
三. Django裏面的ORM的使用:
1. 告訴Django鏈接那個數據庫 (在settings.py的databases中配置mysql)
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'db1', # 哪一個database
'HOST': '127.0.0.1',
'PORT': 3306,
'USER': 'root',
'PASSWORD': '123',
}
}
2. 告訴Django怎麼鏈接
Django默認使用的是MySQLdb模塊 鏈接數據庫, 但MySQLdb不支持python3。因此,要告訴Django用pymysql這個模塊去鏈接MySQL
在settings.py同目錄下的__init__.py文件中,指定使用pymysql模塊代替MySQLdb
import pymysql
pymysql.install_as_MySQLdb()
3. 在app/models.py文件中定義類
必定要繼承models.Model
4. 執行建立表的操做(在pycharm的terminal中鍵入)
1. python3 (/usr/local/bin/python3.6)manage.py makemigrations --> 將models.py的修改登記到小本本上
2. python3 (/usr/local/bin/python3.6)manage.py migrate --> 將修改翻譯成SQL語句,去數據庫執行
亦可: Tools -> Run manage.pyTask -> manage.py makemigrations;manage.py migrate
5. 編輯表
a. 在pycharm中的Database中(若沒有,view-> tool buttons), + -> data source -> mysql -> download missing driver files -> test connection
添加數據後,找綠色向上箭頭保存
b. navicate
c. cmd中sql語句
四. 常規步驟
1. 在models中創建一個類
2. 在urls中加上對應關係
3. 在views中添加該函數
4. 在templates中建立該html文件
五. 圖書管理系統(項目)
1. 表結構設計
1. 出版社
2. 書
3. 做者
2. Django的模板語言
{% for publisher in publisher_list %} # 注意{%中間沒有空格
<tr>
<td>{{ publisher.id }}</td>
<td>{{ publisher.name }}</td>
</tr>
{% endfor %}