60-django-靜態文件配置、request對象方法初識、pycharm連接數據庫(MySQL)、django連接數據庫(MySQL)、orm簡介、orm數據增刪改查

今日內容概要

以登錄功能爲例css

今天仍是從總體先大體掌握django的功能,後續會詳細的講解每一塊知識點html

  • 靜態文件配置
  • request對象方法初識
  • pycharm連接數據庫(MySQL)
  • django連接數據庫(MySQL)
  • Django ORM簡介
  • 利用ORM實現數據的增刪改查操做

今日內容詳細

靜態文件配置

 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 ]

request對象方法初識

 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')

pycharm連接數據庫(MySQL)

 1 """
 2 三個位置查找數據庫相關
 3     右側上方database
 4     左下方database
 5     配置裏面的plugins插件搜索安裝
 6     
 7     再沒有卸載pycharm從新裝    
 8 
 9 pycharm能夠充當不少款數據庫軟件的客戶端
10 
11 參考截圖和視頻操做便可
12     須要提早建立好庫
13 """

django連接數據庫(MySQL)

 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()

Django ORM

 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>    
靜態文件配置

request對象方法初識

 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')
request對象方法初識

pycharm連接數據庫

1 # 找到pycharm database選項(三個地方查找)
2 
3 # 選取對應的數據庫 下載對應的驅動
4 """
5 明明連接上了數據庫 可是看不到表沒法操做
6 這個時候你只須要將剛剛建立的連接刪除 從新連接一次便可
7 """
pycharm連接數據庫

django連接MySQL

 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()
django連接MySQL

django orm(重要)

 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 *******************************************************************
django orm

簡單的orm語句

 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       """
簡單的orm語句

做業

 1 今日做業
 2 必作題
 3 1.整理今日考題,今日筆記,今日內容
 4 2.熟練掌握django靜態文件配置、數據庫連接配置,注意事項
 5 3.熟練掌握django orm大致功能
 6 4.利用django在前端頁面上完成註冊登錄功能
 7 
 8 選作題
 9 1.編寫圖書管管理系統(周做業)
10 提示:主要表(圖書表,出版社表,做者表),嘗試利用orm創建表關係
11   不會寫不要緊,後面會講
相關文章
相關標籤/搜索