静态文件配置

在settings.py中最底下有一个叫做static的文件夹,主要用来加载一些模板中用到的资源,提供给全局使用

这个静态文件主要用来配置CSS,HTML,图片,字体文件等

1
2
3
4
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR,'static')
]

之后在模板中,首先加载静态文件,之后调用静态,就不用写绝对全路径了

模板中的声明

{ % load static % }{ % load staticfiles % }

在引用资源的时候使用

{ % static 'xxx' % } xxx 就是相对于STATICFILES_DIRS的一个位置

图片(文件)上传

文件数据存储在request.FILES属性中

form表单上传文件需要添加enctype='multipart/form-data'

文件上传必须使用POST请求方式

存储:

在static文件夹下创建uploadefiles用与存储接收上传的文件

在settings中配置,MEDIA_ROOT=os.path.join(BASE_DIR,r'static/uploadefiles')

在开发中通常是存储的时候,我们要存储到关联用户的表中

上传示例代码

在模板文件中

1
2
3
4
5
<form method='post' action='xxx' enctype='multipart/form-data'>
{% csrf_token %}
<input type='file' name='icon'>
<input type='submit' value='上传'>
<form>

在view函数中

1
2
3
4
5
6
7
def savefIcon(request):
if request.method == 'POST'
f = request.FILES['icon']
filePath = os.path.join(settings.MEDIA_ROOT,f.name)
with open(filePath,'wb) as fp:
for part in f.chunks():
fp.write(part)

注意:ImageField中的upload_to属性指向的是相对路径,可以添加年月日 等,相对于MEDIA_ROOT媒体根目录,所以也可以在setting.py中建立MEDIA_ROOT=’xxx’

思维导图

8NhYe1.png