序列化与反序列化
序列化: 将对象序列化成字符串用户传输
反序列化: 将字符串反序列化成对象用于使用
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