Làm cách nào để tải lên nhiều tệp bằng Django?

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 Django

from 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

Làm cách nào để tải lên nhiều tệp cùng một lúc trong Django?

Mẫu def[yêu cầu]. trả lại kết xuất [yêu cầu, "chỉ mục/biểu mẫu. html", {}] chắc chắn Tải lên [yêu cầu]. để đếm, x trong liệt kê [yêu cầu. CÁC TẬP TIN. getlist["tệp"]]. quá trình xác định [f]. với open['/Users/benq/django girls/upload/media/file' + str[count], 'wb+'] làm đích. cho đoạn trong f

Python Django có hỗ trợ tải lên nhiều tệp không?

Vì vậy, trường tệp được sử dụng để tải lên một tệp và trường tệp được sử dụng để tải nhiều tệp lên . Bạn cần sửa đổi quan điểm. py và thêm chức năng sau vào nó. Bạn cần cập nhật tệp filesupload/urls. py để thêm một đường dẫn khác để tải lên nhiều tệp. Bây giờ hãy chọn một hoặc nhiều tệp để tải lên.

Làm cách nào để tải lên nhiều hình ảnh trong Django?

Thiết lập dự án .
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. .
Định cấu hình url của chúng tôi. .
Tạo mô hình cho hình ảnh của chúng tôi. .
Làm cho chế độ xem của chúng tôi hoạt động. .
Tạo mẫu của chúng tôi

Chủ Đề