Sẽ có nhiều trường hợp chúng ta cần tải nhiều ảnh lên. Django, mặc dù không cung cấp tiện ích này ngay lập tức, nhưng chúng tôi vẫn có thể thực hiện điều này với một sửa đổi đơn giản. Vì vậy, trong hướng dẫn này, chúng ta sẽ tìm hiểu cách tải lên nhiều hình ảnh [Có thể là cả tệp. ] tại một thời điểm ở Django
Thiết lập dự án
Hãy tạo một dự án Django có tên là multiple_uploads
và một ứng dụng Django có tên là app
django-admin startproject multiple_uploads cd multiple_uploads django-admin startapp app
Thiết lập cài đặt của chúng tôi. py
Chúng tôi cần thực hiện hai việc [ngoài việc thêm chúng tôi vào danh sách INSTALLED_APPS] trong cài đặt của mình. py, Một là thay đổi đường dẫn của thư mục tra cứu mẫu. Thứ hai là định cấu hình thư mục phương tiện của chúng tôi. Thêm các dòng dưới đây vào cài đặt của bạn. tập tin py
import os .... INSTALLED_APPS = [ .... 'app' ] .... TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join[BASE_DIR, "templates"]], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ] .... MEDIA_ROOT = os.path.join[BASE_DIR, "media"] MEDIA_URL = "/media/"
Định cấu hình url của chúng tôi
Đảm bảo multiple_uploads/url của bạn. py trông như thế này
Tải lên nhiều Hình ảnh/Tệp trong
Vui lòng bật JavaScript
Tải lên nhiều hình ảnh/tệp trong Djangofrom django.contrib import admin from django.urls import path, include urlpatterns = [ path['admin/', admin.site.urls], path['', include['app.urls']] ]
Tạo một url mới. py trong thư mục app/ của bạn và thêm các dòng dưới đây vào đó
from django.urls import path from . import views from django.conf import settings from django.conf.urls.static import static urlpatterns = [ path['', views.upload, name='upload'] ] + static[settings.MEDIA_URL, document_root=settings.MEDIA_ROOT]
Dòng cuối cùng được sử dụng để phục vụ các tệp tĩnh trong quá trình phát triển. Và mọi thứ còn lại là tự giải thích
Tạo mô hình cho hình ảnh của chúng tôi
Thêm các dòng dưới đây vào
import os .... INSTALLED_APPS = [ .... 'app' ] .... TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join[BASE_DIR, "templates"]], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ] .... MEDIA_ROOT = os.path.join[BASE_DIR, "media"] MEDIA_URL = "/media/"0 của bạn
from django.db import models class MultipleImage[models.Model]: images = models.FileField[]
Chúng tôi đang tạo một mô hình để lưu trữ một hình ảnh duy nhất. Vì vậy, chúng tôi sẽ lưu trữ từng hình ảnh trong một đối tượng mô hình riêng biệt
Làm cho chế độ xem của chúng tôi hoạt động
Hãy tạo một chức năng xem với tên tải lên trong ứng dụng/lượt xem của chúng tôi. py. Thêm các dòng dưới đây vào nó
from django.shortcuts import render from .models import MultipleImage def upload[request]: if request.method == "POST": images = request.FILES.getlist['images'] for image in images: MultipleImage.objects.create[images=image] images = MultipleImage.objects.all[] return render[request, 'index.html', {'images': images}]
Mọi thứ đều quen thuộc với chúng tôi, nhưng chỉ có dòng hình ảnh = yêu cầu. CÁC TẬP TIN. getlist['images'] có thể phù hợp với bạn, dòng này nhận danh sách các hình ảnh được chọn từ mẫu của chúng tôi. Chúng tôi sẽ lặp qua danh sách hình ảnh này và lưu trữ từng hình ảnh trong mô hình. Sau đó, chúng tôi sẽ lấy tất cả các đối tượng và gửi nó đến mẫu để hiển thị
Tạo mẫu của chúng tôi
Tạo một thư mục có tên là các mẫu trong thư mục gốc của dự án của bạn và tạo một chỉ mục. tập tin html trong đó. Thêm các dòng dưới đây vào tập tin đó
Mutliple Upload img { height: 200px; width: 200px; } {% csrf_token %} Upload {% for img in images %} {% endfor %}
Pay attention to the enctype = “multipart/form-data”, this is important!. Since HTML tag only supports a single selection, we need to add an additional attribute called multiple. This enables us to select multiple images. And everything else is understandable, we’re iterating and displaying through the list of image models we got from our views.py.
Đã được thực hiện
Cuối cùng, chúng ta chỉ cần thực hiện một số chuyển đổi cơ bản
________số 8_______Bây giờ, hãy mở 127. 0. 0. 1. 8000 trong trình duyệt yêu thích của bạn. Bạn có thể tải lên nhiều hình ảnh hoặc tệp bằng Django