Django + Vue 實現圖片上傳功能的全流程配置與詳細操作指南

在這里插入圖片描述

文章目錄

  • 前言
  • 圖片上傳步驟
    • 1. urls 配置
    • 2. settings 配置
    • 3. models 配置
    • 4. 安裝Pillow


前言

????在現代Web應用中,圖片上傳是一個常見且重要的功能。Django作為強大的Python Web框架,結合Vue.js這樣的現代前端框架,能夠高效地實現這一功能。本文將詳細介紹如何在Django項目中配置圖片上傳的后端處理,并在Vue前端實現圖片的選擇、預覽和上傳功能。

圖片上傳步驟

1. urls 配置

from django.contrib import admin
from django.urls import path,includefrom django.conf import settings
from django.conf.urls.static import staticurlpatterns = [path('admin/', admin.site.urls),path('app/',include('app.urls')),
]
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
  • static 函數用于定義靜態文件的URL模式,它接收兩個參數:
    • 第一個參數是settings.MEDIA_URL,它是一個字符串,表示媒體文件的URL前綴。
    • 第二個參數是settings.MEDIA_ROOT,它是一個字符串,表示媒體文件在服務器上的存儲路徑。

2. settings 配置

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'

1. MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

  • 這行代碼設置了Django項目中媒體文件的根目錄。os.path.join是一個Python函數,用于連接多個路徑部分,生成一個完整的路徑。
  • BASE_DIR通常是一個變量,表示Django項目的根目錄。這個目錄是Django項目中所有其他路徑的基準點。
  • 'media'是一個子目錄,用于存放用戶上傳的媒體文件,比如圖片、視頻、文檔等。

2. MEDIA_URL = '/media/'

  • 這行代碼定義了媒體文件的URL前綴。當Django處理URL請求時,如果URL以/media/開頭,它就會知道這個請求是指向媒體文件的。

3. models 配置

class ShopModel(models.Model):name = models.CharField(max_length=100)price = models.DecimalField(max_digits=3,decimal_places=2)count = models.IntegerField()info = models.CharField(max_length=200)is_checked = models.BooleanField(default=False)shopimg = models.ImageField(upload_to='imag/',null=True)# 默認狀態參數-------------------------------# 保質期---剩余天數protect = models.IntegerField(null=True)def __str__(self):return self.nameclass Meta():db_table = 'shop'
  • models.ImageField:這是 Django 的一個字段類型,用于處理圖像上傳。它繼承自 models.FileField,專門用于存儲圖像文件,比如 JPEG、PNG 等格式。
  • upload_to='imag/':這個參數指定了上傳文件的保存路徑。當用戶上傳圖片時,Django 會將圖片保存在 MEDIA_ROOT 目錄下的 imag 文件夾中。
    • 例如,如果你的 MEDIA_ROOT 設置為 /path/to/media,則圖片將被保存在 /path/to/media/imag/
  • null=True:這個參數允許字段可以存儲空值。也就是說,如果用戶沒有上傳圖片,這個字段可以是 NULL,而不是必須有一個文件。

4. 安裝Pillow

  • 在使用ImageField字段的時候,需要提前安裝:pip install Pillow
  • Pillow 它提供了豐富的圖像處理功能,使用它就可以完成對圖像的操作了

前端代碼:

<input type="file" accept="image/png" @change="imgChange">
upfile() {?      let formdata = new FormData();?      formdata.append('name',this.shop.name);
?      formdata.append('price',this.shop.price);
?      formdata.append('count',this.shop.count);
?      formdata.append('info',this.shop.info);
?      formdata.append('shopimg',this.shop.shopimg);?      this.$axios.post('http://127.0.0.1:8000/app/shops/',formdata,{
?        headers:{
?          'Content-Type':'multipart/form-data'
?          }
?        }).then((result) => {
?        console.log(result);
?      }).catch((err) => {
?        console.log(err);
?      });
}

FormData

  • FormData 用于創建鍵值對集合和構造包含文件的請求體,這些鍵值對可以被用來發送 HTTP 請求。它特別適用于需要上傳表單數據,包括文件。
  • FormData 對象提供了 append 方法來添加鍵值對,并且能夠自動處理文件上傳的邊界和編碼。使用這種方式,開發者可以輕松地將文件作為二進制數據上傳到服務器。
  • 使用 Axios 發送 POST 請求,并將 FormData 作為請求體。請求頭內容應該修改為:'Content-Type':'multipart/form-data'
  • 由于 FormData 會自動設置 Content-Typemultipart/form-data,所以也可以省略

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/38052.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/38052.shtml
英文地址,請注明出處:http://en.pswp.cn/web/38052.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Arduino】小飛魚通達二開實驗ESP32使用紅外尋跡傳感器 (圖文)

在智能小車項目中都會有一個功能就是自動巡線&#xff0c;今天小飛魚通達來實驗的就是這個紅外尋跡傳感器。 紅外尋跡傳感器的原理就是有一個小燈發出紅外光&#xff0c;光線照到物體后進行反射&#xff0c;有一個接收器進行接收&#xff0c;當在一定距離內會導通電路&#xf…

網安加·百家講壇 | 肖文棣:鑄盾護企——面對勒索病毒產業鏈的企業防護之道

作者簡介&#xff1a;肖文棣&#xff0c;OWASP中國廣東分會負責人、網安加社區特聘專家&#xff0c;現任某外企安全架構師&#xff0c;負責應用安全設計、管理和評審等工作。 引言 隨著信息技術的飛速發展&#xff0c;網絡安全問題愈發凸顯&#xff0c;企業面臨的網絡安全威脅…

HarmonyOS NEXT Beta 版開發者及先鋒用戶招募(第一期)報名答題題庫(持續更新中,僅供學習分享使用)

判斷題 All True. 單選題 關于容器組件Row和Column&#xff0c;下面說法錯誤的是&#xff1a; A A. justifyContent用于設置子組件在交叉軸方向上的對齊格式。 B. Row容器主軸為水平方向&#xff0c;Column容器主軸為垂直方向。 C. justifyContent用于設置子組件在主軸方向上的…

瞎談指令集和寄存器讀寫來驅動硬件

文章目錄 前言一、到底什么是指令集&#xff1f;二、為什么現代CPU需要指令集&#xff1f;三、開發完指令集究竟有什么缺點&#xff1f;四、寄存器讀寫怎么驗證&#xff1f;總結 前言 其實很早以前就想對這個話題展開來聊聊&#xff0c;但是對體系結構的理解也僅僅限于《量化體…

應急響應:應急響應流程,常見應急事件及處置思路

「作者簡介」&#xff1a;冬奧會網絡安全中國代表隊&#xff0c;CSDN Top100&#xff0c;就職奇安信多年&#xff0c;以實戰工作為基礎著作 《網絡安全自學教程》&#xff0c;適合基礎薄弱的同學系統化的學習網絡安全&#xff0c;用最短的時間掌握最核心的技術。 這一章節我們需…

交通氣象站:保障道路暢通的守護者

隨著現代社會的飛速發展&#xff0c;交通網絡日益密集&#xff0c;人們的出行越來越依賴于公路、鐵路和航空等交通方式。然而&#xff0c;多變的天氣條件常常給交通安全帶來隱患&#xff0c;如大霧、雨雪、強風等惡劣天氣不僅影響行車視線&#xff0c;還可能造成路面濕滑、結冰…

在我們實際使用中,線程池的大小配置多少合適?

線程池的大小配置是一個需要根據具體應用場景和資源情況來決定的問題。沒有一個固定的數字適用于所有情況&#xff0c;但是可以遵循一些通用的原則和方法來確定合適的線程池大小&#xff0c;我們來看一下通用原則和方法都有哪幾個維度。 通用原則和方法 1. CPU密集型任務&…

第十四屆藍橋杯省賽C++B組D題【飛機降落】題解(AC)

解題思路 這道題目要求我們判斷給定的飛機是否都能在它們的油料耗盡之前降落。為了尋找是否存在合法的降落序列&#xff0c;我們可以使用深度優先搜索&#xff08;DFS&#xff09;的方法&#xff0c;嘗試所有可能的降落順序。 首先&#xff0c;我們需要理解題目中的條件。每架…

【MotionCap】pycharm 遠程在wsl2 ubuntu20.04中root的miniconda3環境

pycharm wsl2 鏈接到pycharmsbin 都能看到內容,/root 下內容賦予了zhangbin 所有,pycharm還是看不到/root 下內容。sudo 安裝了miniconda3 引發了這些問題 由于是在 root 用戶安裝的miniconda3 所以安裝路徑在/root/miniconda3 里 這導致了環境也是root用戶的,會觸發告警 WA…

沖擊試樣缺口拉刀V2U2U3U5

拉刀性能介紹 沖擊試樣缺口拉刀采用進口高速工具鋼W18Cr4V材質&#xff0c;特殊工藝精密加工制造&#xff0c;硬度高&#xff0c;耐磨性好&#xff0c;使用壽命長&#xff0c;每把拉刀可加工試樣達20&#xff0c;000多個。拉刀共54個齒&#xff08;深度5mm缺口拉刀為74個齒&am…

抖音本地生活服務商條件太高怎么辦?低門檻方法來了!

隨著本地生活賽道的潛力不斷顯現&#xff0c;本地生活服務商的數量也在與日俱增。而在所有開通本地生活服務板塊的互聯網平臺中&#xff0c;日活躍用戶數約8億的抖音往往是眾多創業者優先考慮的對象&#xff0c;以抖音本地生活服務商如何申請為代表的相關問題也因此常出現在多個…

排序算法(1)之插入排序----直接插入排序和希爾排序

個人主頁&#xff1a;C忠實粉絲 歡迎 點贊&#x1f44d; 收藏? 留言? 加關注&#x1f493;本文由 C忠實粉絲 原創 排序之插入排序----直接插入排序和希爾排序(1) 收錄于專欄【數據結構初階】 本專欄旨在分享學習數據結構學習的一點學習筆記&#xff0c;歡迎大家在評論區交流討…

頁面加載503 Service Temporarily Unavailable異常

最近發現網頁刷新經常503&#xff0c;加載卡主&#xff0c;刷新頁面就正常了。 研究之后發現是頁面需要的js文件等加載失敗了。 再研究之后發現是nginx配置的問題。 我之前為了解決一個漏洞檢測到目標主機可能存在緩慢的HTTP拒絕服務攻擊 把nginx的連接設置了很多限制&#…

PHP傳奇游戲推廣信息發布站程序源碼帶會員發布

這是一個游戲導航網站程序。可以做任何一款游戲的推廣發布&#xff0c;會員注冊發布&#xff0c;后臺審核通過&#xff0c;前臺就可以展示&#xff0c;非常不錯的游戲發布平臺

一個項目學習Vue3---響應式基礎

觀察下面一段代碼&#xff0c;學習響應式基礎的全部內容 <template><div><div>將下面的msg屬性放到上面來:{{ msg }}</div><button click"count">{{ count }}</button><button click"object.count.value">{{ o…

關于Autowired

Autowired 是 Spring Framework 中的一個注解&#xff0c;用于自動注入依賴對象。通過這個注解&#xff0c;Spring 可以自動將匹配的 bean 注入到所需的類中&#xff0c;從而實現控制反轉&#xff08;IoC&#xff09;和依賴注入&#xff08;DI&#xff09;。 基本用法 Autowi…

javascript: void(0);用法和常見問題

在JavaScript中&#xff0c;void(0)是一個表達式&#xff0c;它用來獲取一個特殊的值undefined&#xff0c;并且執行一個沒有返回值的操作。這個表達式經常用于創建一個沒有實際返回值的函數調用&#xff0c;或者在需要一個表達式的地方使用&#xff0c;但不希望有任何返回值。…

【Carsim】Carsim2019與Matlab2015b聯合仿真測試

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 這篇文章主要介紹Carsim2019與Matlab2015b聯合仿真測試。 學其所用&#xff0c;用其所學。——梁啟超 歡迎來到我的博客&#xff0c;一起學習&#xff0c;共同進步。 喜歡的朋友可以關注一下&#xff0c…

HTML基礎知識學習指南

HTML基礎知識學習指南 1. 介紹 HTML&#xff08;超文本標記語言&#xff09;是構建網頁的基礎。它是一種標記語言&#xff0c;用于定義網頁的內容和結構。HTML由一系列元素組成&#xff0c;這些元素使用標簽來表示。 2. HTML文檔結構 HTML文檔的基本結構包括以下部分&#…

AI作畫工具深度剖析:Midjourney vs. Stable Diffusion (SD)

在人工智能技術的推動下&#xff0c;藝術創作的邊界被不斷拓寬&#xff0c;AI作畫工具成為數字藝術家與創意人士的新寵。其中&#xff0c;Midjourney與Stable Diffusion&#xff08;SD&#xff09;作為當前領域的佼佼者&#xff0c;以其獨特的算法機制、豐富的功能特性及高質量…