利用Django REST framework快速實現文件上傳下載功能


安裝包

pip install Pillow

如果在windows系統,需要下載whl文件手動pip安裝
https://pypi.org/project/Pillow/#files

設置

1、首先在settings.py中定義MEDIA_ROOT與MEDIA_URL。例如:

MEDIA_ROOT = os.path.join(BASE_DIR, "files")
MEDIA_URL = "/files/"

files可以是項目根目錄的任何一個文件夾

2、在urls.py的urlpatterns中,設置訪問文件的url

from django.views.generic import TemplateView
url(r'^files/(?P<path>.*)$', serve, {"document_root": settings.MEDIA_ROOT})

?P<path>代表這一塊的內容將作為參數path傳給serve方法

serve方法是django自帶的處理靜態文件的方法

document_root是必須提供的文件位置

注意如果文件放在url注冊的document_root之外,前端是不能訪問到這些文件的

models.py

file = models.FileField()

  1. 定義upload_to="background/"

    表示上傳的文件將會存在$MEDIA_ROOT/background/下

  2. ImageField和FileField實際上是CharFields,所以可以設置blank=True

serializers.py

正常寫一個ModelSerializer

class FileSerializer(serializers.ModelSerializer):
    class Meta:
        model = File
        fields = "__all__"

效果

寫完view中的邏輯和注冊路由后,訪問對應的接口可以看到FileField字段是一個上傳文件的按鈕

上傳文件后,該字段會返回可以訪問文件的url


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM