Đối tượng File trong Django Model

Subscribe to my newsletter and never miss my upcoming articles

Lớp cơ sở File

Lớp File là một lớp bao của một đối tượng file của Python với một vài bổ sung của Django. Ở đằng sau, Django sử dụng lớp này để biểu diễn một file.

Tât cả các đối tượng File trong Django có những thuộc tính và phương thức sau:

name

Tên của file bao gồm cả đường dẫn tương đối tính từ MEDIA_ROOT.

size

Kích thước của file, tính theo đơn vị byte.

file

Là đối tượng file của Python mà lớp File bao bọc.

mode

Chế độ đọc/ghi của file.

open(mode=None)

Mở hoặc mở lại file. Đối số mode tương tự đối số mode trong hàm open() của Python:

  • 'r': mở để đọc (mặc định)
  • 'w': mở để ghi đè
  • 'x': mở để tạo mới, nếu file đã tồn tại thì không có tác dụng
  • 'a': mở để ghi thêm
  • 'b': chế độ nhị phân
  • 't': chế độ văn bản (mặc định)
  • '+': mở để cập nhật (cả đọc và ghi)

Khi mở lại file với mode=None thì chế độ gốc của file được sử dụng.

close()

Đóng file.

chunks(chunk_size=None)

Lặp qua file để sinh ra các "chunk" (các miếng) của file. Kích thước mỗi miếng được quy định bởi chunk_size, kích thước mặc định là 64 KB.

multiple_chunks(chunk_size=None)

Trả về True nếu file đủ lớn để cần phải chia làm nhiều mảnh nhỏ với chunks.

Các lớp thừa kế từ File

ContentFile

Cú pháp tạo: ContentFile(content, name=None)

ContentFile chuyên dùng để tạo các file có nội dung là chuỗi. Ví dụ:

from django.core.files.base import ContentFile

f1 = ContentFile("esta frase está en español")
f2 = ContentFile(b"these are bytes")

ImageFile

Cú pháp tạo: ImageFile(file_object, name=None)

django.core.files.images.ImageFile chuyên dùng để biểu diễn các file ảnh, ngoài các phương thức và thuộc tính của lớp cha File, nó có thêm hai thuộc tính sau:

  • width: độ rộng của ảnh (đơn vị px)
  • height: chiều cao của ảnh (đơn vị px)

Các phương thức bổ sung

Các đối tượng File nếu là một thuộc tính của một đối tượng model khác sẽ có thêm hai phương thức mở rộng sau:

save(name, content, save=True)

Lưu một file mới với tên và nội dung được cung cấp. Nó sẽ không thay thế file hiện có, nhưng sẽ tạo một file mới và cập nhật đối tượng chứa nó. Nếu saveTrue, phương thức save() của đối tượng model cũng được gọi một khi file đã được lưu lại. Do vậy hai dòng lệnh sau:

>>> car.photo.save('myphoto.jpg', content, save=False)
>>> car.save()

tương đương với:

>>> car.photo.save('myphoto.jpg', content, save=True)

delete(save=True)

Xóa file khởi đối tượng model và cũng xóa luôn file trên ổ đĩa. Nếu saveTrue, phương thức save() của model được gọi sau khi file đã bị xóa.

No Comments Yet