以登錄功能爲例css
今天仍是從總體先大體掌握django的功能,後續會詳細的講解每一塊知識點html
1 # 登錄功能 2 3 """ 4 咱們將html文件默認都放在templates文件夾下 5 咱們將網站所使用的靜態文件默認都放在static文件夾下 6 7 靜態文件 8 前端已經寫好了的 可以直接調用使用的文件 9 網站寫好的js文件 10 網站寫好的css文件 11 網站用到的圖片文件 12 第三方前端框架 13 ... 14 拿來就能夠直接使用的 15 """ 16 # django默認是不會自動幫你建立static文件夾 須要你本身手動建立 17 通常狀況下咱們在static文件夾內還會作進一步的劃分處理 18 -static 19 --js 20 --css 21 --img 22 其餘第三方文件 23 24 """ 25 在瀏覽器中輸入url可以看到對應的資源 26 是由於後端提早開設了該資源的藉口 27 若是訪問不到資源 說明後端沒有開設該資源的藉口 28 29 http://127.0.0.1:8000/static/bootstrap-3.3.7-dist/css/bootstrap.min.css 30 """ 31 32 # 靜態文件配置 33 34 """ 35 **************************************************************** 36 當你在寫django項目的時候 可能會出現後端代碼修改了可是前端頁面沒有變化的狀況 37 1.你在同一個端口開了好幾個django項目 38 一直在跑的實際上是第一個django項目 39 40 2.瀏覽器緩存的問題 41 settings 42 network 43 disable cache 勾選上 44 ***************************************************************** 45 """ 46 47 STATIC_URL = '/ooo/' # 相似於訪問靜態文件的令牌 48 """若是你想要訪問靜態文件 你就必須以static開頭""" 49 """ 50 /static/bootstrap-3.3.7-dist/js/bootstrap.min.js 51 52 /static/令牌 53 取列表裏面從上往下依次查找 54 bootstrap-3.3.7-dist/js/bootstrap.min.js 55 都沒有才會報錯 56 """ 57 # 靜態文件配置 58 STATICFILES_DIRS = [ 59 os.path.join(BASE_DIR,'static'), 60 os.path.join(BASE_DIR,'static1'), 61 os.path.join(BASE_DIR,'static2'), 62 ] 63 64 # 靜態文件動態解析 65 {% load static %} 66 <link rel="stylesheet" href="{% static 'bootstrap-3.3.7-dist/css/bootstrap.min.css' %}"> 67 <script src="{% static 'bootstrap-3.3.7-dist/js/bootstrap.min.js' %}"></script> 68 69 70 # form表單默認是get請求數據 71 http://127.0.0.1:8000/login/?username=jason&password=123 72 """ 73 form表單action參數 74 1.不寫 默認朝當前所在的url提交數據 75 2.全寫 指名道姓 76 3.只寫後綴 /login/ 77 """ 78 79 80 # 在前期咱們使用django提交post請求的時候 須要取配置文件中註釋掉一行代碼 81 MIDDLEWARE = [ 82 'django.middleware.security.SecurityMiddleware', 83 'django.contrib.sessions.middleware.SessionMiddleware', 84 'django.middleware.common.CommonMiddleware', 85 # 'django.middleware.csrf.CsrfViewMiddleware', 86 'django.contrib.auth.middleware.AuthenticationMiddleware', 87 'django.contrib.messages.middleware.MessageMiddleware', 88 'django.middleware.clickjacking.XFrameOptionsMiddleware', 89 ]
1 request.method # 返回請求方式 而且是全大寫的字符串形式 <class 'str'> 2 request.POST # 獲取用戶post請求提交的普通數據不包含文件 3 request.POST.get() # 只獲取列表最後一個元素 4 request.POST.getlist() # 直接將列表取出 5 request.GET # 獲取用戶提交的get請求數據 6 request.GET.get() # 只獲取列表最後一個元素 7 request.GET.getlist() # 直接將列表取出 8 """ 9 get請求攜帶的數據是有大小限制的 大概好像只有4KB左右 10 而post請求則沒有限制 11 """ 12 13 def login(request): 14 # 返回一個登錄界面 15 """ 16 get請求和post請求應該有不一樣的處理機制 17 :param request: 請求相關的數據對象 裏面有不少簡易的方法 18 :return: 19 """ 20 # print(type(request.method)) # 返回請求方式 而且是全大寫的字符串形式 <class 'str'> 21 # if request.method == 'GET': 22 # print('來了 老弟') 23 # return render(request,'login.html') 24 # elif request.method == 'POST': 25 # return HttpResponse("收到了 寶貝") 26 27 if request.method == 'POST': 28 return HttpResponse("收到了 寶貝") 29 return render(request, 'login.html')
1 """ 2 三個位置查找數據庫相關 3 右側上方database 4 左下方database 5 配置裏面的plugins插件搜索安裝 6 7 再沒有卸載pycharm從新裝 8 9 pycharm能夠充當不少款數據庫軟件的客戶端 10 11 參考截圖和視頻操做便可 12 須要提早建立好庫 13 """
1 # 默認用的是sqkite3 2 DATABASES = { 3 'default': { 4 'ENGINE': 'django.db.backends.sqlite3', 5 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), 6 } 7 } 8 9 # django連接MySQL 10 1.第一步配置文件中配置 11 DATABASES = { 12 'default': { 13 'ENGINE': 'django.db.backends.mysql', 14 'NAME': 'day60', 15 'USER':'root', 16 'PASSWORD':'123', 17 'HOST':'127.0.0.1', 18 'PORT':3306, 19 'CHARSET':'utf8' 20 } 21 } 22 2.代碼聲明 23 django默認用的是mysqldb模塊連接MySQL 24 可是該模塊的兼容性很差 須要手動改成用pymysql連接 25 26 你須要告訴django不要用默認的mysqldb仍是用pymysql 27 # 在項目名下的init或者任意的應用名下的init文件中書寫如下代碼均可以 28 import pymysql 29 pymysql.install_as_MySQLdb()
1 """ 2 ORM. 對象關係映射 3 做用:可以讓一個不用sql語句的小白也可以經過python 面向對象的代碼簡單快捷的操做數據庫 4 不足之處:封裝程度過高 有時候sql語句的效率偏低 須要你本身寫SQL語句 5 6 類 表 7 8 對象 記錄 9 10 對象屬性 記錄某個字段對應的值 11 12 13 應用下面的models.py文件 14 """ 15 16 # 1 先去models.py中書寫一個類 17 class User(models.Model): 18 # id int primary_key auto_increment 19 id = models.AutoField(primary_key=True) 20 # username varchar(32) 21 username = models.CharField(max_length=32) 22 # password int 23 password = models.IntegerField() 24 25 *************************# 2 數據庫遷移命令************************* 26 python3 manage.py makemigrations 將操做記錄記錄到小本本上(migrations文件夾) 27 28 python3 manage.py migrate 將操做真正的同步到數據庫中 29 # 只要你修改了models.py中跟數據庫相關的代碼 就必須從新執行上述的兩條命令 30 ****************************************************************** 31 32 class User(models.Model): 33 # id int primary_key auto_increment 34 id = models.AutoField(primary_key=True,verbose_name='主鍵') 35 # username varchar(32) 36 username = models.CharField(max_length=32,verbose_name='用戶名') 37 """ 38 CharField必需要指定max_length參數 不指定會直接報錯 39 verbose_name該參數是全部字段都有的 就是用來對字段的解釋 40 """ 41 # password int 42 password = models.IntegerField(verbose_name='密碼') 43 44 45 class Author(models.Model): 46 # 因爲一張表中必需要有一個主鍵字段 而且通常狀況下都叫id字段 47 # 因此orm當你不定義主鍵字段的時候 orm會自動幫你建立一個名爲id主鍵字段 48 # 也就意味着 後續咱們在建立模型表的時候若是主鍵字段名沒有額外的叫法 那麼主鍵字段能夠省略不寫 49 # username varchar(32) 50 username = models.CharField(max_length=32) 51 # password int 52 password = models.IntegerField()
1 # 字段的增長 2 1.能夠在終端內直接給出默認值 3 2.該字段能夠爲空 4 info = models.CharField(max_length=32,verbose_name='我的簡介',null=True) 5 3.直接給字段設置默認值 6 hobby = models.CharField(max_length=32,verbose_name='興趣愛好',default='study') 7 8 # 字段的修改 9 直接修改代碼而後執行數據庫遷移的兩條命令便可! 10 11 # 字段的刪 12 直接註釋對應的字段而後執行數據庫遷移的兩條命令便可! 13 執行完畢以後字段對應的數據也都沒有了 14 15 """ 16 在操做models.py的時候必定要細心 17 千萬不要註釋一些字段 18 執行遷移命令以前最好先檢查一下本身寫的代碼 19 """ 20 21 # 我的建議:當你離開你的計算機以後必定要鎖屏
1 # 今天只會介紹一點點 後面會詳細的介紹 2 3 # 查 4 res = models.User.objects.filter(username=username) 5 """ 6 返回值你先當作是列表套數據對象的格式 7 它也支持索引取值 切片操做 可是不支持負數索引 8 它也不推薦你使用索引的方式取值 9 user_obj = models.User.objects.filter(username=username).first() 10 """ 11 filter括號內能夠攜帶多個參數 參數與參數之間默認是and關係 12 你能夠把filter聯想成where記憶 13 14 15 16 # 增 17 from app01 import models 18 res = models.User.objects.create(username=username,password=password) 19 # 返回值就是當前被建立的對象自己 20 21 # 第二種增長 22 user_obj = models.User(username=username,password=password) 23 user_obj.save() # 保存數據
1 """ 2 今日考題 3 1.什麼是靜態文件,django靜態文件配置如何配置,如何解決接口前綴不斷變化,html頁面上路徑的引用須要反覆修改的問題 4 2.request對象的方法有哪些,分別是幹什麼用的,請具體闡述細節及注意事項 5 3.django自帶的數據庫是什麼,如何換成其餘數據庫例如MySQL,如何配置更換 6 4.什麼是django orm,如何使用django orm,數據庫遷移命令如何書寫 7 5.orm字段的增刪改查與數據的增查如何實現 8 """
1 """ 2 在瀏覽器窗口輸入url之因此可以訪問到對應的資源是由於後端提早開設了該資源的訪問接口 3 4 咱們習慣將html文件存放在templates文件夾下 5 咱們習慣將靜態文件存放在static文件夾下 6 靜態文件 7 網站已經寫好的 活着是第三方現成的代碼 直接拷貝使用 8 css文件 js文件 img文件 第三方組件 9 10 static文件夾內還會建立幾個文件夾 11 css 12 js 13 img 14 第三方 15 16 django不會自動幫你建立static文件夾須要你本身手動建立 17 """ 18 STATIC_URL = '/static/' # 訪問靜態文件的令牌 19 20 # 靜態文件配置 settings.py 21 STATICFILES_DIRS = [ # 令牌持有者能夠訪問的文件路徑 22 os.path.join(BASE_DIR,'static'), 23 os.path.join(BASE_DIR,'static1'), 24 os.path.join(BASE_DIR,'static2'), 25 ] 26 """ 27 查找順序就是從上往下依次查找,查找到一個就不會繼續往下找了因此可能會出現替換的狀況 28 """ 29 30 # 令牌動態解析 31 <link href="/static/a.txt"></link> 32 33 {% load static %} 34 <link href="{% static 'a.txt' %}"></link>
1 # 登錄功能 2 3 # form表單action三個參數寫法 4 5 request.method # 獲取當前請求方式 全大寫的字符串 6 7 request.GET # 獲取url問好後面攜帶的參數 8 .get() 列表最後一個元素 9 .getlist() 拿整個列表 10 request.POST # 獲取post請求提交過來的普通鍵值對(不包含文件) 11 .get() 列表最後一個元素 12 .getlist() 拿整個列表 13 """ 14 前期咱們在朝django後端提交post請求的是時候要先去配置文件中註釋一行代碼 15 MIDDLEWARE = [ 16 # csrf... 17 ] 18 """ 19 20 def index(request): 21 if request.method == 'POST': 22 return HttpResponse('post') 23 return HttpResponse('get')
1 # 找到pycharm database選項(三個地方查找) 2 3 # 選取對應的數據庫 下載對應的驅動 4 """ 5 明明連接上了數據庫 可是看不到表沒法操做 6 這個時候你只須要將剛剛建立的連接刪除 從新連接一次便可 7 """
1 # 1.配置文件中配置 2 DATABASES = { 3 'default': { 4 'ENGINE': 'django.db.backends.mysql', 5 'NAME': 'day60', 6 'USER':'root', 7 'PASSWORD':'admin123', 8 'HOST':'127.0.0.1', 9 'PORT':3306, 10 'CHARSET':'utf8' 11 } 12 } 13 14 # 2.init文件指定pymysql 15 import pymysql 16 pymysql.install_as_MySQLdb()
1 """ 2 orm不會幫你建立庫 只能建立到表的層面 3 須要你本身提早建立好庫 4 """ 5 # 對象關係映射 6 表 類 7 記錄 對象 8 數據 對象屬性/方法 9 """ 10 可以讓一個不會sql語句的python程序員也可以簡單快捷的操做數據庫,極大的提高開發效率 11 """ 12 13 # 去應用下的models.py中書寫模型類 14 # 類 模型類 15 # 表 模型表 16 class UserInfo(models.Model): 17 # 當你沒有建立主鍵字段的時候orm會自動幫你建立一個名爲id的主鍵字段 18 uid = models.AutoField(primary_key=True) 19 # uid int primary key auto_increment 20 username = models.CharField(max_length=32) 21 # username varchar(32) CharField字段必定要書寫max_length參數 22 password = models.IntegerField() 23 # password int 24 **************************數據庫遷移命令***************************** 25 1.python3 manage.py makemigrations 26 # 將操做記錄到小本本上(migrations文件夾內) 不能真正的直接操做數據庫 27 2.python3 manage.py migrate 28 # 將操做真正的同步到數據庫中 29 """只要在models中書寫了跟數據庫相關的代碼 就必需要從新執行上述兩條命令""" 30 31 # pycharm簡單快捷輸入 32 tools 33 run manage.py task 34 自動提示 35 *******************************************************************
1 # 字段的增刪改查 2 # 增 3 1.終端裏面本身加默認值 4 2.null=True 5 3.default='666' 6 7 # 刪 8 註釋代碼執行兩條命令 (而後收拾行李跑路走人) 9 # 在操做models.py中的代碼的時候必定要細心 10 11 # 改 12 修改代碼執行兩條命令 13 14 # 數據的增查 15 # 增 16 from app01 import models 17 1.create() 18 user_obj = models.UserInfo.objects.create(**kwargs) 19 # 改方法有一個返回值 就是當前建立的數據對象自己 20 2.對象.save() 21 # 先生成一個類對象 22 user_obj = models.User(**kwargs) 23 # 對象調用save方法 24 user_obj.save() 25 26 # 查 27 1.filter() # where 28 res = models.UserInfo.objects.filter(**kwargs) 29 """ 30 返回的結果是一個querySet對象 你能夠把它當作是一個列表套數據對象 31 [數據對象1,數據對象2...] 32 33 支持索引和切片操做 可是不支持負數 而且不推薦你使用索引 34 35 .first()方法 36 37 filter括號內能夠寫多個參數 查詢的時候默認是and關係 38 """
1 今日做業 2 必作題 3 1.整理今日考題,今日筆記,今日內容 4 2.熟練掌握django靜態文件配置、數據庫連接配置,注意事項 5 3.熟練掌握django orm大致功能 6 4.利用django在前端頁面上完成註冊登錄功能 7 8 選作題 9 1.編寫圖書管管理系統(周做業) 10 提示:主要表(圖書表,出版社表,做者表),嘗試利用orm創建表關係 11 不會寫不要緊,後面會講