靜態文件


靜態文件

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

什么是靜態文件

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

默認情況下網站所用到的靜態文件資源全部都會放到static文件夾下,Django中需要手動創建這個文件夾,static 文件夾下面還可以創建其他的文件夾,將css、js文件區分開來,為了更加方便的管理文件。

css   文件夾
js    文件夾
font  文件夾
img   文件夾
Bootstrap    文件夾
fontawesome  文件夾

靜態文件的配置

在 mysite settings.py配置文件中添加以下信息:

  • STATIC_URL:訪問靜態文件資源的接口后綴
  • STATICFILES_DIRS:靜態文件所在的文件夾的路徑
STATIC_URL = '/static/'     # 訪問靜態文件的接口url路徑后綴,
STATICFILES_DIRS = [        # 靜態文件資源存在的具體文件夾目錄
    os.path.join(BASE_DIR,"static"),    # 將static文件里的內容暴露給用戶看
    os.path.join(BASE_DIR,"static1"),    # 可以寫多個,從上到下查找
]                           # 這樣客戶端通過url方式可以訪問你配置的靜態文件資源。

靜態文件動態綁定

我們在配置好這個靜態文件配置后,需要在html中動態綁定,方便實用並且可以適應靜態文件路徑變動

將bootstrap文件夾放入static文件夾中,html head標簽內引用以下內容。

<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
{% load static %}
<link rel="stylesheet" href="{% static 'bootstrap/css/bootstrap.min.css' %}">
<script src="{% static 'bootstrap/js/bootstrap.min.js' %}"></script>

注意:

如果你的Django項目中 DEBUG 模式設置為False,那么靜態文件會報404,修改為True即可正常訪問(200)

form表單回顧

get請求

form表單默認是get請求,可以指定為post

那么我們也可以指定他的請求方式是post

get請求特點:在url會顯示攜帶的信息,信息格式:路徑后綴/?xxx=xxx&yyy=xxx

  1. get請求攜帶的數據不安全
  2. get請求攜帶的數據大小有限制
  3. 通常get請求如果要攜帶參數的話只會攜帶一些不是很重要的數據

action參數

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

  2. 只寫后綴的形式:index/

  3. 寫全路徑的形式:https://www.baidu.com

前期如果我們在朝后端提交post請求的時候,會出現403的情況,需要注釋掉配置文件中一行內容。

'django.middleware.csrf.CsrfViewMiddleware'
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',
]

在django中后端的視圖函數,無論是發的get請求還是post請求,都會執行視圖函數,默認處理的是get請求。

request方法初識

我們在視圖函數中定義的所有函數都必須有返回值,並且返回值都是HTTPResponse對象

request 的部分方法

  • request.method:獲取請求方式,返回的是純大寫的字符串。

  • request.GET:獲取用戶提交的get請求數據,返回的是列表套對象。

  • request.GET.get():獲取列表中的最后一個

  • request.GET.getlist():獲取列表類型的數據

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

  • request.POST.get():獲取列表中的最后一個

  • request.POST.getlist():獲取列表類型的數據

Django連接MySQL數據庫

一、配置文件配置

需要在settings.py配置文件中配置 db.sqlite3

DATABASES = {
    'default': {
        'ENGINE':'django.db.backends.mysql',
        'NAME':'day50',
        'USER':'root',
        'PASSWORD':'123',
        'HOST':'192.168.32.130',
        'PORT':3306,
    }
}

二、告訴Django使用pymysql

在項目名/應用名下的一個__init__.py中寫

import pymysql
pymysql.install_as_MySQLdb()

Django中操作ORM

ORM簡介

ORM 對象關系映射

python中         數據庫
類名      -->     表名
對象      -->     數據
對象.屬性  -->  字段對應的值

為什么使用ORM

能夠讓不會數據庫操作的人也能夠簡單方便的去操作數據庫

ORM的缺點

封裝程度太高,有時候會出現查詢效率偏低的問題。

編寫models.py

我們在寫django項目的時候,最好一個django項目就對應一個數據庫。

class User(models.Model):
    # 如果不寫主鍵,默認會添加一個名為id的主鍵,並且這個主鍵是自增id
    name = models.CharField(max_length=32)
    pwd = models.IntegerField()

數據庫遷移命令

編寫完models.py之后,我們要把表創建在MySQL數據庫中,需要用到兩條命令

python3 manage.py makemigrations記錄將數據的修改

python3 manage.py migrate真正同步到數據庫中

只要修改了models.py中與數據庫相關的代碼,就必須重新執行上面兩條命令。

Django中模型表字段的增刪改查

對數據庫中字段的修改,直接修改字段即可

如果是新增數據庫字段,要注意兩點:

  • 要給新的字段設置一個默認值

    email = models.EmailField(default="qinyj@qq.com")

  • 或者設置新的字段為空

    phone = models.BigIntergerField(null=True)

如果要刪除數據字段,直接注釋對應的字段即可,注意刪除字段也會把數據刪除

最后的最后,記得要執行數據庫的兩條遷移命令

1.python3 manage.py makemigrations  # 將數據庫的修改 記錄到migrations文件內
    
2.python3 manage.py migrate         # 將修改操作真正的同步到數據庫中

Django中模型表數據的增刪改查

增:  
user_obj = models.User.objects.create(username=username,password=password)
print(user_obj,user_obj.username,user_obj.password)
# create方法會有一個返回值  返回值就是當前被創建的對象本身
        
刪:
models.User.objects.filter(id=delete_id).delete()
"""
批量操作  會將filter查詢出來的列表中所有的對象全部刪除
"""

改:
models.User.objects.filter(id=edit_id).update(username=username,password=password)
"""
批量操作  會將filter查詢出來的列表中所有的對象全部更新
"""
        
查:
data = models.User.objects.filter(username=username)
"""
filter返回的結果是一個"列表",里面才是真正數據對象
filer括號內可以放多個關鍵字參數 這多個關鍵字參數在查詢的時候 是and關系
"""

user_list = models.User.objects.all()
"""
結果是一個"列表" 里面是一個個的數據對象
"""


免責聲明!

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



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