1. 程式人生 > 其它 >Django中media資源配置的問題

Django中media資源配置的問題

序列化與反序列化

序列化: 將物件序列化成字串使用者傳輸

反序列化: 將字串反序列化成物件用於使用

drf的序列化與反序列化

序列化: 將Model類物件序列化成字串使用者傳輸

反序列化: 將字串反序列化成Model物件用於使用

1、在settings中配置

配置媒體跟路由: settings.py 用來存放使用者上傳的靜態檔案,可以對外公開

# 註冊rest_framework 
INSTALLED_APPS = [ # ... 'rest_framework', ]

#設定os.path.join(BASE_DIR, 'templates'
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')]
        ,
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                #...
            ],
        },
    },
]
# media資源 
MEDIA_URL = '/media/' # 後期高階序列化類與檢視類,會使用該配置 
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')# media資源路徑

 將使用者上傳的所有靜態檔案統一管理:settings.py

2、在urls配置

from MxShop.settings import MEDIA_ROOT
from django.views.static import serve  #靜態檔案
urlpatterns = {
    path(r'admin/', admin.site.urls),
    url('^media/(?P<path>.*)$', serve, {"document_root": MEDIA_ROOT})
}

serve是個檢視函式(request,path),通過path找到檔案然後 返回response。

字典中為預設引數,既不來源於前端,也不來源後端

伺服器對外公開伺服器靜態資源,是通過配置url介面,並且在介面中返回指定的靜態資源

問題

現象1:找不到資源

現象2:TypeError: 'set' object is not reversible

解決方法:

檢查專案中的ruls.py檔案是否把urlpatterns列表的[]寫成了{}。因為字典是無序的,所以報了不能逆轉的錯誤。

並且商品圖片也能正常顯示了


參考:

https://www.jianshu.com/p/32c52066ddb4

https://www.cnblogs.com/lulingjie/p/11914317.html

https://blog.csdn.net/u012069883/article/details/82378295