初識Django之前端后端與數據庫的配置


一、靜態文件配置

  1. 默認情況下所有的html文件都放在templates文件夾內

  2. 什么是靜態文件

    網站所使用的提前寫好的css、JS、第三方前端模塊、圖片都叫靜態資源文件。

  3. 默認情況下網站所用到的靜態文件資源全部會放在static文件夾下,通常情況下在static文件夾內部還會創建其他文件夾。

    static文件夾下的文件集有

    在Django中需要自己手動創建靜態文件存放的文件夾。

    在創建好文件夾后需要在settings文件內進行如下配置:

    如果不進行static的配置,瀏覽器是無法訪問static文件夾的里的資源的,另外訪問必須具體到文件夾里的某一個頁面,不能只訪問文件夾。

    在進行靜態文件訪問測試的時候我們需要將瀏覽器的network設置為disabled cache(禁止瀏覽器使用緩存)如下圖是Google瀏覽器的設置方法:

  4. 關於url中的接口前綴和settings配置的static的關系

    第一個static是接口前綴,必須和url的接口前綴保持一致,第二個static是靜態資源文件夾。

    在我們的html文件中導入框架和jQuery時也要加上接口前綴(如果使用的cdn則不用)。

  5. 多個靜態資源文件夾的查找順序是從上往下一個文件一個文件查找。

    !

  6. 靜態頁面的動態綁定

    當我們修改urls的路徑時,html的框架中的接口前綴也需要修改,如果html文件非常多修改起來就很麻煩了,為了解決這個問題我們需要將html的靜態文件進行動態綁定。

    綁定程序如下:

    {% 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表單的補充

form表單默認是get請求,get請求攜帶數據的方式:

http://127.0.0.1:8000/login/?username=zgh&password=123
特點:url?xxx=xxx&yyy=yyy

特點:

1.攜帶數據不安全

2.攜帶的數據大小有限制

3.通常只會攜帶一些不重要的數據

form表單的action填寫要求:

1.不寫,默認朝向當前的地址提交

2.只寫后綴則朝本站的后綴地址提交

3.寫全路徑可以向其他路徑提交網站提交

三、post請求出現403問題

Django中,前期我們朝后端提交post請求時會出現403的問題,需要在配置文件中注釋掉一行代碼如下:

MIDDLEWARE = [
			'django.middleware.security.SecurityMiddleware',
			'django.contrib.sessions.middleware.SessionMiddleware',
			'django.middleware.common.CommonMiddleware',
			# 'django.middleware.csrf.CsrfViewMiddleware',
			'django.contrib.auth.middleware.AuthenticationMiddleware',
			'django.contrib.messages.middleware.MessageMiddleware',
			'django.middleware.clickjacking.XFrameOptionsMiddleware',
		]

四、request方法初識

4.1判斷當前請求方式

Django后端的視圖函數默認是get請求,無論是get請求還是post請求都會執行視圖函數

def XXX(request):#XXX是請求的頁面后綴
    return render(****)

使用request.method可以拿到的大寫的字符串類型的請求方式GET、POST,

這樣我們就可以根據請求方式的不同進行進一步的操作。

4.2request.POST與request.GET

request.POST獲取用戶提交的post請求數據:

我們可以將request.POST內的數據看做一個字典,字典內的value是一個個的列表,request.POST.get()獲取列表中的最后一個元素,request.POST.getlist()獲取用戶提交的整個列表。

print(request.POST)  # <QueryDict: {'username': ['zgh'], 'password': ['123']}> 你直接看成一個字典即可
username = request.POST.get('username')  # zgh <class 'str'>
password = request.POST.get('password')  # 123 <class 'str'>

request.GET獲取用戶提交的get請求的數據,與request.POST相同request.GET也有get和getlist方法,取值方式和獲取的數據類型和request.POST完全相同。
這里需要說明POST請求也可以通過request.GET的方式拿到url中?后面的數據。

五、pycharm連接數據庫

找到pycharm的database欄按下圖步驟進行操作

選擇好我們需要的數據庫后會進入下面的界面

將pycharm中修改后的表寫入數據庫可通過下圖進行

設置完成后我們的pycharm就是數據庫的客戶端了,但是這時Django還需要對數據庫的進一步配置才能使用這個數據庫。
Django默認自帶一個小型數據庫sqlite(僅做測試使用,對日期格式不兼容),這里我們使用Django連接主流數據庫MySQL。
首先我們需要在Django的配置文件settings.py文件中的DATABASES項進行如下配置:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'test1',
        'USER':'root',
        'PASSWORD':'123agh',
        'HOST':'127.0.0.1',
        'PORT':3306,
        'CHARSET':'utf8'
    }
}#這里使用的mysql數據庫

然后需要配置Django連接MySQL的模塊,如果我們不配置的話Django會報錯讓裝MySQLdb,但是這里我們使用pymysql,具體配置:在Django項目名下或者應用名下的__init__.py中書寫

import pymysql
pymysql.install_as_MySQLdb()

到這里我們的Django和MySQL數據庫之間的連接配置已經做好了。

六、Django orm簡介

關於orm(對象關系映射)的簡要講解可以參考本人之前的博客orm,這里直接介紹Django中orm的的使用方法。

6.1模型表的創建

模型表的創建在每個應用的models文件內進行具體創建方式如下:

class User(models.Model):
    # id int auto_increment primary key  主鍵id字段
    # id = models.AutoField(primary_key=True)  # django當你不指定主鍵的時候
    # 會自動幫你創建一個名id字段 並且作為主鍵
    # 如果你自己制定了 django就不會再幫你創
    # username varchar(32)  django中默認沒有char字段 但是支持用戶自定義
    username = models.CharField(max_length=255)  # CharField必須要指定max_length參數
    # password int
    password = models.CharField(max_length=32)
    # 方式1  設置默認值
    # email = models.EmailField(default='123@qq.com')  # varchar
    # # 方式2   允許字段為空
    # phone = models.BigIntegerField(null=True)
    # # 直接在提示中給默認值
    # gender = models.CharField(max_length=32)

這里需要說明的有一下幾點:

1.模型表類需要繼承models.Model類

2.主鍵id字段如果我們不手動創建的話Django會自動創建以個名為“id”的字段作為該表的主鍵id

3.如果我們自定義主鍵id,那么主鍵id的名稱我們可以自定義

4.這里的charField是varchar數據類型,這里沒有char字段但是用戶可以自定義,charField必須要指定max_length參數

5.字段允許為空但必須要設置默認值,否則pycharm會提示讓你創建默認值

6.定義好模型表類后需要執行數據庫遷移命令才能在數據庫中將表創建出來

6.2數據庫遷移命令

數據庫遷移命令主要功能是生成數據庫表的創建與改動記錄,將對表的創建與修改同步到數據庫中。

要完成上面兩個功能需要pycharm的terminal中鍵入下面兩行代碼:

python3 manage.py makemigrations
python3 manage.py migrate

第一行命令記錄對數據庫的修改,第二行命令同步修改到數據庫,這里需要注意的地方:每對數據庫修改一次都必須執行這兩行命令,否者修改無效,執行順序必須是先執行第一行再執行第二行。

6.3模型表的增刪改查

6.3.1字段的增刪改查

字段的增刪改查直接在模型表類中進行,即直接對模型表類的字段進行增刪改查,然后執行數據遷移命令即可。這里需要說明的是數據庫字段的刪除(包括注釋表中已有的字段)一定要慎重,特別是一定不要注釋字段,否則數據遷移命令后數據庫中對應的字段就被刪除了。

6.3.2模型表數據的增刪改查

  1. 查找記錄

    data = models.User.objects.filter(username=username)  # <QuerySet [<User: User object>]>
    

    filter返回的是一個“列表”,里面才是真正的數據對象,filter括號內可以放多個關鍵字參數,這多個關鍵字參數是與(and)的關系。

  2. 增加記錄

    user_obj = models.User.objects.create(username=username,password=password)
    

    create方法有一個返回值 ,返回值就是當前被創建的對象本身。

  3. 修改記錄

   models.User.objects.filter(id=edit_id).update(username=username,password=password)

這是一個批量操作,會將filter查詢出來的列表中所有的對象全部更新。

  1. 刪除記錄
   models.User.objects.filter(id=delete_id).delete()

這也是一個批量操作,會將filter查詢出來的列表中所有的對象全部刪除。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM