Django和drf上傳檔案學習記錄

2021-10-23 17:57:04 字數 3040 閱讀 5588

簡單的學習了django和drf上傳檔案(主要是),做乙個記錄。

網頁原始碼

lang

="en"

>

>

charset

="utf-8"

>

>

titletitle

>

head

>

>

enctype

="multipart/form-data"

action

=""method

="post"

>

type

="file"

name

="file"

/>

/>

type

="submit"

value

="upload"

/>

form

>

body

>

html

>

url

url(r'^img/'

,im**iew.as_view())

,

view

class

im**iew

(apiview)

:"""

檔案上傳介面

"""defpost

(self, request,

*args,

**kwargs)

: myfile = request.files.get(

"file"

,none

)# 設定預設值none

"沒有檔案上傳!"

)with

open

(f'.'

,'wb+'

)as f:

for chunk in myfile.chunks():

# 分塊寫入檔案

"檔案上傳完成!"

)

開啟html網頁選擇檔案上傳即可完成檔案上傳。

設定setting的**檔案路徑

media_root = os.path.join(base_dir,

'media'

)media_url =

'/media/'

定義model

class

product_img

(models.model)

:# upload_to設定的是儲存路徑,為:setting+img組合路徑

image = models.imagefield(upload_to=

'img'

, verbose_name=

'', help_text='')

class

meta

: verbose_name_plural = verbose_name =

''

簡單的編寫序列化

# 商品序列化

class

productimageserializer

(serializers.modelserializer)

:class

meta

: model = product_img

fields =

['image'

]# 需要的字段只需要image

view編寫

class

upload_pic

(viewsets.modelviewset)

: queryset = product_img.objects.

all(

) serializer_class = productimageserializer

如果想檢視檔案上傳的屬性資訊,可複製createmodelmixin中的create方法進行修改,例如:

def

create

(self, request,

*args,

**kwargs)

: serializer = self.get_serializer(data=request.data)

# 列印資訊

print

(request.data[

'image'])

print

(len

(request.data[

'image'])

) serializer.is_valid(raise_exception=

true

) self.perform_create(serializer)

headers = self.get_success_headers(serializer.data)

return response(serializer.data, status=status.http_201_created, headers=headers)

url註冊

#配置路由

router = defaultrouter(

)router.register(r'imgupload'

,upload_pic , basename=

'pic'

)# 處理

urlpatterns =

[ path(

'admin/'

, admin.site.urls)

, path(

'', include(router.urls)

)]

可以開啟,進行測試。

Django和drf的總結

最少的語言描述django?將資料庫的東西通過orm的對映取出來,通過view檔案,按照template檔案排出的模板渲染成html。當使用者請求相應的url時,返回相應的結果。最少語言描述drf?將資料庫的東西通過orm的對映取出來,通過view和serializers檔案繫結rest介面,當前端...

Django 和drf的區別

django rest framwork 和 django 1.兩者的概念 django rest framwork 將資料庫的東西通過orm的對映取出來,通過view和serializers檔案繫結rest介面,當前端請求時,返回序列化好的json。django 將資料庫的東西通過orm的對映取出...

django 檔案上傳

檔案上傳 當django處理上傳乙個檔案的時候,檔案資料被放在request.files中。這個文件解釋檔案怎麼樣被儲存在磁碟上或者記憶體中,怎樣定製預設的行為。基本檔案上傳 考慮乙個包含filefield的簡單的表單 from django import forms class uploadfil...