Django框架之第二篇--app註冊、靜態檔案配置、form表單提交、pycharm連結資料庫、Django使用mysql資料庫、表字段的增刪改查、表資料的增刪改查
本節知識點大致為:靜態檔案配置、form表單提交資料後端如何獲取、request方法、pycharm連線資料庫,django使用mysql資料庫、
表字段的增刪改查、表資料的增刪改查
一、建立app,建立之後一定要先去settings.py註冊
二、靜態檔案配置
html檔案預設全部放在templates資料夾下
靜態檔案:就是前端已經寫好了的檔案我們拿過來可以直接使用 這些檔案都叫做靜態檔案
靜態檔案可以是:
1.bootstrap一類的前端框架,已經寫好了的 2.圖片 3.css,js
static資料夾需要自己建立
靜態檔案預設全都放在static資料夾下
static資料夾中會預設建立的子資料夾
css資料夾 當前網站所有的樣式檔案
js檔案 當前網站所有的js檔案
img檔案 當前網站所有的圖片檔案
其他(前端框架程式碼 第三方外掛程式碼...)
使用者可以訪問的資源都在url中,只有url中開設相關的資源你才能訪問到(******)
2、在settings.py檔案中
STATIC_URL = '/static/' (相當於一個令牌) 這個static不是資料夾的名字 而是介面字首
只要你想訪問靜態檔案中的資源 檔案路徑就必須用static開頭(在html頁面中head標籤中匯入css,js樣式路徑都要以static開頭,static後面的檔案路徑去下面的檔案路徑中查詢)
手動將static資料夾中所有的資源暴露給使用者
STATICFILES_DIRS = [
os.path.join(BASE_DIR,'static'), # 真正的資料夾路徑
os.path.join(BASE_DIR,'static1'), # 真正的資料夾路徑
os.path.join(BASE_DIR,'static2'), # 真正的資料夾路徑
os.path.join(BASE_DIR,'static3') # 真正的資料夾路徑
]
3、靜態檔案介面字首"動態解析" (html頁面css,js匯入) 防止需要重複更改匯入靜態檔案路徑
{% load static %} <link rel="stylesheet" href="{% static 'bootstrap-3.3.7-dist/css/bootstrap.min.css' %}"> <script src="{% static 'bootstrap-3.3.7-dist/js/bootstrap.min.js' %}"></script>
利用解析器 動態獲取介面字首
三、form表單提交資料
1、表單提交方式
form表單預設是get請求,攜帶資料的方式是url問好後跟資料,這種方式資料不安全。
http://127.0.0.1:8000/login/?username=zekai&password=123
可以通過method改為post請求,改為post請求後,需要去settings檔案中註釋掉一箇中間件
form表單提交資料目的地action:(三種提交地址方式)
1.不寫的情況下 預設往當前地址提交
2.還可以寫字尾/index/(講專案常用這種)
3.還可以寫全路徑
2、檢視函式針對不同的請求方式,有不同的處理邏輯
request.method可以得到表單請求的兩種方式
1.檢視函式一般主要會先處理get請求,把頁面渲染出來,get獲取的資料也是一個大字典(get請求方式也能獲取到前端提交的資料)
2.post請求就是頁面表單提交的資料,可以把它當成一個大字典
request.POST資料格式
3、獲取表單傳遞的具體資料
比如傳遞的username和password值,有兩種方式
第一種方式: username = request.POST.get('username') #預設只取列表最後一個元素,所以取出來的資料是字串(用兩個name一樣input舉例) 第二種方式: password = request.POST['password'] #不建議這種方式取值,取不到值就會報錯
GET
request.GET獲取前端get提交的資料(就類似於是一個大字典)
取值
request.GET.get('username') # 雖然value是一個列表 但是預設只取列表最後一個元素,強烈不建議你使用中括號的形式取值
# 如果想直接把列表全部取出(******) 比如獲取表單的愛好資訊,獲取多個
request.GET.getlist('hobby')
POST
request.POST獲取前端post提交的資料(就類似於是一個大字典)
取值
request.POST.get('username') # 雖然value是一個列表 但是預設只取列表最後一個元素
# 強烈不建議你使用中括號的形式取值
# 如果想直接把列表全部取出(******)
request.POST.getlist('hobby')
四、pycharm連線資料庫
五、django使用mysql資料庫
1.django預設使用的是自帶的sqlite資料庫,如果你想讓它其他的資料庫 需要在settings配置檔案中配置
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'day51', 'HOST':'127.0.0.1', 'PORT':3306, 'USER':'root', 'PASSWORD':'root',
'CHARSET':'utf8', } }
2.還要在專案名下的init檔案或者是應用名下的init檔案中告訴django不要使用預設的mysqldb連線mysql,而是使用pymysql
import pymysql pymysql.install_as_MySQLdb()