前端頁面兩種引入外部資源的方式css
CDN 內容分發網絡html
加載本地文件前端
html文件約定俗成放在templates文件夾下python
TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR, 'templates')] , 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ]
靜態文件約定俗成放在static文件下mysql
通常狀況下static文件夾下建議分紅css,js等相關文件夾實現分層sql
django靜態文件配置 STATIC_URL = '/static/' # 靜態文件路徑配置 STATICFILES_DIRS = [ os.path.join(BASE_DIR,'static'), os.path.join(BASE_DIR,'static1'), os.path.join(BASE_DIR,'static2'), ]
form表單兩種提交方式數據庫
1 input type=submitdjango
2 button按鈕網絡
form表單默認是get請求,能夠經過method參數指定提交方式函數
參數攜帶方式 http://127.0.0.1:8000/login/?username=jason&password=123
action三種指定數據提交路徑方式
1 全路徑 http://127.0.0.1:8000/login/
2 後綴 /login/
3 不寫 不寫默認提交到當前路徑
一般狀況下視圖函數都是get請求
get請求和post請求
django獲取前端請求方式 request.method
獲取get請求提交的數據
request.GET 攜帶了前端全部get請求的數據
username = request.GET.get('username')
取值遵循字典取值,雖然它的value是列表可是默認取最後一個元素
能夠經過getlist()獲取到列表
獲取post請求提交的數據
request.POST 攜帶了全部post請求數據
username = requetst.POST.get('username')
取值遵循字典取值,雖然它的value是列表可是默認取最後一個元素
能夠經過getlist()獲取到列表
ORM:對象關係映射
一個類 >>> 數據庫的一張表
類的對象 >>> 數據庫的一條記錄
對象點數據(user_obj.name) >>> 數據庫某條記錄的某個字段值
優勢:不會sql也能夠進行開發,大大提升開發效率
缺點:可能sql語句執行效率不高
django鏈接mysql數據庫
1 配置文件:變量名必須所有大寫
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'test007', 'USER':'root', 'PASSWORD':'123321', 'HOST':'127.0.0.1', 'PORT':3306 } }
2 django orm不會自動建立數據庫,須要手動建立
django orm會自動建立表,字段
數據庫遷移命令(重點)
python manage.py makemigrations 記錄數據庫更改操做
python manage.py migrate 操做數據庫
orm查詢user表全部數據
models.User.objects.all()
orm查詢user表的某條數據
user_queryset = models.User.objects.filter(name=name,password=password)
只有queryset對象才能點query獲取當前對象所對應的sql語句
能夠經過索引的方式從queryset對象中取出數據對象
queryset支持正數索引取值,可是不推薦使用,orm推薦使用first()
user_queryset = models.User.objects.filter(name=name,password=password).first()
只有數據對象才能點出數據
表字段的增刪改
只要修改了models.py中的代碼,就必須從新執行數據庫遷移命令
表字段新增:對於已經有數據的表,新增字段的時候要設置默認值,或者指定該字段能夠爲空
表字段刪除:直接註釋掉models.py中的代碼
表字段修改:直接修改models.py中的代碼
表的增刪改查
models.User.objects.all() 獲取user表中的全部數據
models.User.objects.filter(id=delete_id).delete() 刪除user表中查出的全部數據
models.User.objects.create(name=username,password=password,addr=addr) 在user表中新增一條數據
user_obj = models.User(**request.POST)
user_obj.save() 新增數據
models.User.objects.filter(id=id2).update(name=username,password=password,addr=addr)更新數據
edit_obj = models.User.objects.filter(id=id2).first()
edit_obj.name = username
edit_obj.password = password
edit_obj.addr = addr
edit_obj.save() 更新數據的另外一種方式
只要queryset對象就能夠連續點出對於的方法
查表時能夠用get獲取,可是不推薦
django請求聲明週期
圖書管理系統表設計
書籍 >>> 出版社 一對多(注意:外鍵說法描述只有一對多,沒有多對一)
做者 >>> 書籍 多對多
出版社
publish = models.ForeignKey(to='Publish') # 關聯publish表 關聯字段默認就是主鍵id
authors = models.ManyToManyField(to='Author') # 自動幫你建立書籍與做者的關係表 不會在當前表裏面建立字段