django 實現圖片上傳和顯示操作
版本:
- django 2.0.1
- python 3.6.2
準備工作:
- pip install pillow 安裝python圖片處理庫 pillow
- pip install mysqlclient 安裝mysql驅動包
- django工程的建立和app的建立
- 在settings.py檔案中載入app
上傳操作的實現:
- 在所建app中修改models.py檔案:
class Img(models.Model):
img_url = models.ImageField(upload_to='img') # upload_to指定圖片上傳的途徑,如果不存在則自動建立
- 執行以下命令,建立專案與資料庫之間的關係
python manage.py makemigrations
python manage.py migrate
修該專案的settings.py檔案
- 載入mysql驅動並連線mysql,並新增圖片上傳的根目錄
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # 載入驅動
'NAME': 'imgs',# 資料庫名
'USER': 'root',# mysql的使用者名稱
'PASSWORD': '',# mysql的密碼
'HOST': 'localhost', # 連線地址(本地的話使用localhost或者127.0.0.1)
'PORT': 3306 # 資料庫服務的埠號
}
}
MEDIA_ROOT = os.path.join(BASE_DIR, 'media').replace('\\', '/') # media即為圖片上傳的根路徑
MEDIA_URL = '/media/'
- 編寫views.py檔案
def uploadImg(request): # 圖片上傳函式
if request.method == 'POST':
img = Img(img_url=request.FILES.get('img'))
img.save()
return render(request, 'imgupload.html')
- 在urls.py檔案中新增url對映路徑
from imgTest.views import uploadImg # 新增
urlpatterns = [
path('admin/', admin.site.urls),
path('uploadImg/', uploadImg), # 新增
]
- 建立模板檔案
- 在所建app的目錄新建資料夾templates,並建立imgUpload.html新增以下內容
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>圖片上傳</title>
</head>
<body>
<form action="" method="post" enctype="multipart/form-data">
{% csrf_token %}
<input type="file" name="img">
<input type="submit" value="上傳">
</form>
</body>
</html>
- 啟動django伺服器,在瀏覽器中輸入http://localhost:8000/uploadImg/就可以看到上傳的介面。
圖片的顯示操作
- 修改views.py檔案新增圖片顯示函式
def showImg(request):
imgs = Img.objects.all() # 從資料庫中取出所有的圖片路徑
context = {
'imgs' : imgs
}
return render(request, 'showImg.html', context)
- 修改urls.py新增對映並載入圖片靜態路徑
from django.contrib import admin
from django.urls import path
from imgTest.views import uploadImg, showImg
from django.conf.urls.static import static
from django.conf import settings
urlpatterns = [
path('admin/', admin.site.urls),
path('uploadImg/', uploadImg),
path('showImg/', showImg)
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
- 新建圖片顯示模板檔案showImg.html,並新增以下內容
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>圖片展示</title>
</head>
<body>
{% for item in imgs %}
<img src="{{ item.img_url.url }}"><br/>
{% endfor %}
</body>
</html>
- 重啟django伺服器並在瀏覽器中輸入http://localhost:8000/showImg/即可看到上傳的所有圖片
相關文章
- Django實現圖片上傳並前端頁面顯示Django前端
- 圖片上傳顯示替換
- vxe-upload 上傳圖片顯示進度
- 直播系統app原始碼,藉助django 實現顯示圖片功能APP原始碼Django
- vue 實現貼上上傳圖片Vue
- formData原生實現圖片上傳ORM
- QLabel顯示圖片 ,並實現縮放
- 上傳封面圖片前臺不顯示 Picture檔案裡可以看到上傳的圖片
- PHP實現圖片(檔案)上傳PHP
- CSDN上傳圖片對水印操作
- node+express實現圖片上傳功能Express
- layui中實現上傳圖片壓縮UI
- 通過API介面實現圖片上傳API
- 短視訊平臺開發,圖片上傳和圖片預覽功能實現
- 配置Django-TinyMCE元件支援上傳圖片功能Django元件
- VS+Qt+Halcon——顯示圖片,實現滑鼠縮放、移動圖片QT
- Java實現圖片上傳到伺服器,並把上傳的圖片讀取出來Java伺服器
- SpringMVC實現ajax上傳圖片實時預覽SpringMVC
- 基於Spring Boot實現圖片上傳/加水印一把梭操作Spring Boot
- element-ui+Vue實現的圖片上傳UIVue
- psd圖片不能在網頁上顯示網頁
- 請問帝國CMS圖片上傳後顯示亂碼怎麼辦
- 使用jpeg圖片庫,顯示圖片並簡單實現LCD的觸屏功能
- 使用Vue實現圖片上傳的三種方式Vue
- 用Vue來實現圖片上傳多種方式Vue
- struts:實現圖片的上傳 argument type mismatch errorError
- FileReader初步使用實現上傳圖片預覽效果
- 上傳圖片
- 前端的圖片壓縮image-compressor(可在圖片上傳前實現圖片壓縮)前端
- (H5)canvas實現裁剪圖片和馬賽克功能,以及又拍雲上傳圖片H5Canvas
- Java和PHP兩種方式實現上傳圖片到新浪微博的圖床JavaPHP圖床
- Geoserver + MySQL實現圖層顯示和文字顯示ServerMySql
- js-xlsx + handsontable + echarts實現excel上傳編輯然後顯示成圖表JSEchartsExcel
- 個人圖床配置,實現部落格園圖片上傳自由圖床
- Vue +Element Ui 使用Upload元件實現多圖片上傳VueUI元件
- vue+springboot實現圖片的上傳及回顯失敗問題的解決VueSpring Boot
- springboot整合百度富文字編輯器ueditor實現圖片上傳和檔案上傳功能Spring Boot
- electron上傳圖片