簡單的學習了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...