django之上传文件media配置
2021-02-04 05:17
标签:文件的 映射 referer img name center 截取 vat 技术 前文已经提到,网站所用到的静态资源(js文件,css文件,image文件)等,是存储在 开发环境即设 确保INSTALLED_APPS安装了django.contrib.staticfiles模块 定义STATIC_URL:如STATIC_URL = ‘/static/‘ 在模板中访问可以有三种方式: (1)直接硬编码像/static/lxx.jpg这样; (2)或是使用static标签,如: ? (3)在/static/目录下存放静态文件。 总结起来,基本配置就是这几点。 settings.py 与网站所使用的的静态文件夹存储静态资源相对应的是,用户上传的一些静态资源(如,头像,视频等)也需要一个专门的文件夹来存放他们。一般而言,这些用户上传的文件,是存储在一个media的文件夹下。为了前端页面能使用到这些资源,需要走以下的步骤: (1)配置项目文件settings.py (2)配置url 这样设置以后,用户上传的文件都会存储在media文件夹中。 如果用户上传文件时,指定了上传的路径,如下:、 那么用户上传的avatar文件将会被保存在 通过配置url暴露文件的访问接口,用户端轻松的访问这些可以资源 这种方式虽然为访问特定资源提供了便利,但是对于一些敏感数据(用户数据,源代码),切记不能开设资源访问接口。 图片防盗链技术的原理 django之上传文件media配置 标签:文件的 映射 referer img name center 截取 vat 技术 原文地址:https://www.cnblogs.com/surpass123/p/13149682.htmldjango之上传文件media配置
静态文件的配置
static
文件夹下的。如何配置django的静态文件了?开发环境的配置
DEBUG=True
{% load staticfiles %}
STATIC_URL = ‘/static/‘
STATICFILES_DIRS = [
os.path.join(BASE_DIR, ‘static‘)
]
用户上传文件配置media
settings.py
# 配置url映射的路径
MEDIA_URL = ‘/media/‘
# 配置上传文件的存储路径
MEDIA_ROOT = os.path.join(BASE_DIR, ‘media‘)
from django.views.static import serve
from Project.settings import MEDIA_ROOT
# 暴露后端指定的文件夹资源
url(r‘^media/(?P
def path_and_rename(instance, filename):
"""
uplaod_to: 上传文件的路径
ext: 文件的后缀名,如‘jpg‘
"""
upload_to = ‘avatar‘
ext = filename.split(‘.‘)[-1]
filename = f‘{uuid.uuid4().hex[:16]}.{ext}‘ # 截取16位的uuid码作为文件名称
return os.path.join(upload_to, filename)
avatar = models.FileField(upload_to=path_and_rename, default=‘avatar/default.png‘, verbose_name=‘用户头像‘)
/media/avatar/
文件夹中。
# 在浏览器中输入文件的url
http://127.0.0.1:8001/media/avatar/0ce4b17ba22c4886.jpg
补充:图片防盗链技术
# 请求来的时候,判断请求是从哪个网站过来的,
- 如果从自己网站过来则放行
- 如果从别的网站过来则禁止
# 判断的标准,http协议请求头中的参数Referer
- 该参数用于记录请求来自于哪个网址
- 如:Referer: http://127.0.0.1:8000/xxx/